一、List
特点
- 可以存放重复的元素
- 有序 —存储的顺序
- 可以在任何位置上插入元素,更利于做元素的查找
二、ArrayList
特点
- 底层结构是动态数组
- 线程不同步–线程不安全
- 更善于做随机访问—遍历
- 添加元素和删除元素的方法运行速度要比LinkedList慢
- 可以存放null元素
简单示例
public class TestList {
public static void main(String[] args) {
List<Integer> list = new ArrayList<Integer>();
//添加元素
list.add(7);
list.add(2);
list.add(3);
list.add(6);
list.add(5);
list.add(0);
list.add(0);
list.add(null);
System.out.println(list);
//使用迭代器查看值
Iterator<Integer> li = list.iterator();
while(li.hasNext()) {
Integer l1 = li.next();
System.out.println(l1);
}
//查询
Integer l2 = list.get(3);
System.out.println("查询结果:"+l2);
}
}
运行结果
三、LinkedList
特点
- 底层结构是链表
- 有序—有索引
- 线程不同步—线程不安全
- 实现了Queue 说明是个队列
- 堆栈的实现 队列的实现 以及双端队列的实现
- LinkedList更擅长做添加、修改和删除等操作 运行速度要比ArrayList快
- 可以存放null元素
简单示例
public class LinkedListText {
public static void main(String[] args) {
List<Integer> list = new LinkedList<Integer>();
//添加元素
list.add(7);
list.add(2);
list.add(3);
list.add(6);
list.add(5);
list.add(0);
list.add(0);
list.add(null);
System.out.println(list);
//使用迭代器查看值
Iterator<Integer> li = list.iterator();
while(li.hasNext()) {
Integer l1 = li.next();
System.out.println(l1);
}
//删除指定元素
list.remove(3);
System.out.println(list);
//在指定的位置插入指定的元素
list.add(0, 10);
System.out.println(list);
}
}
运行结果
四、Vector
Vector 类可以实现可增长的对象数组。与数组一样,它包含可以使用整数索引进行访问的组件。但是,Vector 的大小可以根据需要增大或缩小,以适应创建 Vector 后进行添加或移除项的操作。
特点
- 底层结构是动态数组
- 线程安全 1.2 JDK 版本 默认容量10
- 线程同步—线程安全
- 不建议使用
五、适用场合
- 随机访问—遍历 使用ArrayList
- 线程不安全动态数组 使用ArrayList
- 插入删除操作较多时 使用LinkedList
- 线程不安全队列结构 使用LinkedList