List集合是Collection的一个子类,其本身也是一个接口类,拥有Collection接口的所有方法以及自身具有的方法,也是一个有序的集合,现在主要说一下ArrayList和LinkedList。
一、首先说一下List的一些常用方法,JDK文档里的方法很多,这里总结了一些常用的方法
常用的方法差不多就是这些,如果有没说到或者说错的,欢迎大佬们更正补充,下面给一个Arraylist例题,来加深对这些方法的印象
二、ArrayList
特点:
1)ArrayList集合是一个有序的集合,该顺序是元素添加顺序。
2)ArrayList集合中元素可重复。
3)底层是数组结构。
import java.util.ArrayList;
import java.util.List;
/**
* 创建一个List,在List中增加3个工人,基本信息如下: 姓名 年龄 工资 zhang3 18 3000 li4 25 3500 wang5 22
* 3200 (1)在li4之前插入一个工人,信息为“姓名:zhao6,年龄:24,工资:3300”。 (2)删除wang5的信息
* (3)利用for循环遍历,打印List中所有工人信息。
*
*/
// 实体类
class Worker {
private String name;
private int age;
private double salary;
// 无参构造器
public Worker() {
}
// 有参构造器
public Worker(String name, int age, double salary) {
this.name = name;
this.age = age;
this.salary = salary;
}
// get、set方法封装属性
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
@Override
public String toString() {
return "Worker [name=" + name + ", age=" + age + ", salary=" + salary + "]";
}
}
//测试类
public class Test01 {
public static void main(String[] args) {
test();
}
public static void test() {
List<Worker> workers = new ArrayList<>();
workers.add(new Worker("zhang3", 18, 3000));
workers.add(new Worker("lisi", 22, 3500));
workers.add(new Worker("wangwu", 22, 3200));
System.out.println(workers);
System.out.println("(1)在li4之前插入一个工人,信息为“姓名:zhao6,年龄:24,工资:3300”。");
workers.add(1,new Worker("zhao6", 24, 3300));
System.out.println(workers);
System.out.println("(2)删除wangwu的信息");
workers.remove(3);
System.out.println(workers);
System.out.println("(3)利用for循环遍历,打印List中所有工人信息。");
for (Worker worker : workers) {
System.out.println(worker);
}
}
}
三、LinkedList
特点:
1)底层是以链表结构来存储数据的
2)添加数据的速度相对于ArrayList较快,但是查询较慢
3)元素是有序的,顺序按添加顺序排列
4)元素可以重复
与ArrayList区别:
1)底层结构不同,ArrayList底层是数组结构,LinkedList底层是链表结构
2)LinkedList查询速度慢,而ArrayList查询速度快
3)LinkedList添加速度快,而ArrayList添加速度慢。
LinkedList特有方法:
注意:addFirst()、offerFirst()都是把元素添加到集合的开头,功能是一样的,但是底层调用的方法是不一样的
addFirst()底层代码:
public void addFirst(E e) {
linkFirst(e);
}
offerFirst()底层代码:
public boolean offerFirst(E e) {
addFirst(e);
return true;
}
返回值是不一样的,可以看到,offerFirst调用的其实就是addFirst()方法。
这里例题就不给了,用法其实和ArrayList差不多,只是部分方法不一样,用的时候多数还是用比较常见的方法