List接口继承自Collection接口,因此List接口有Colection接口提供的所有常用方法。
一、List及其实现类1、简介1.1 由数组结构实现的ListList集合底层。存储在List中的对象是有序的,List 用特定的索引来访问元素,可以有重复元素。1.2 ArrrrayListArayList是一种可以处理变长数组的类型,它是一种可以存储任何类型的泛型物体。顾名思义,ArrayList是一个数组列表,所以它使用一个数组来存储对象。1.3 LinkedListLinkedList在实现过程中采用链表数据结构。与ArrayList相比,LinkedList访问速度较慢,但插入和删除熟读块的主要原因是,在插入和删除元素时,只需修改相应的链接位置,无需移动大量元素。LinkedList 可视为双链表,所有操作均可视为双链表操作,因为它实现了Deque接口和List接口。1.4 VectorVector 对象数组可以实现自动增长。java.util.vector提供向量类(vector)实现类似动态数组的功能。
2.区别2.1ArrrayList LinkedListtt与Linked 最明显的区别是区别 ArrrayList 支持随机访问的底层数据结构为数组。LinkedListtt 底层数据结构为链表,不支持随机访问。使用下标访问一个元素,ArrayList 时间复杂度是 O(1),而 LinkedList 是O(n)。2.2 Vector 因为添加了中间的方法 synchronized 修饰,因此 Vector 它是一个安全的线程容器,但在性能上比ArrayListt更好 差,所以已经是了 Java 留在容器中。ArrayList 和 LinkedListed 它们都是非线程安全的。如果遇到多个线程操作同一容器的场景,可以使用工具Collections 中的 synchronizedList 该方法在使用前将其转换为线程安全容器。
二、常用方法
1.size()
int size();///获取集合的长度1
2.isEmpty()
boolean isEmpty();///判断集合是否为空,返回true空集合,false非空集合1
3.contains(Object o);
boolean contains(Object o);//判断集合是否包含某一元素,返回true包含,false不包含1
4.toArray();
Object[] toArray();//将集合转换为数组1
5.add(E e);
boolean add(E e);///添加元素1
6.remove(Object o);
boolean remove(Object o);///去除特定元素listtt.add("aaa");
list.remove("aaa");///将元素aaa移除1233
7.remove(int i);
E remove(int index);///去除指定下标元素1
8.get(int index);
E get(int index);///获取指定标的元素1
9.set(int index, E element);
E set(int index, E element);///替换指定位置的元素1
10.clear()
void clear();////清空List集合中的所有元素1
第三,常用的遍历List方法是先建立一个集合,然后在里面插入一些数据。
public class TestUtils { public static void main(String[] args) { List list = new ArrayList<>(); list.add("a"); list.add("b"); list.add("c"); // 遍历集合的方法 getListData(list); }}
1.一般for循环遍历
public static void getListData(List list) { for (int i =0;i<list.size();i++) { System.out.println(list.get(i)); }}
运行结果:
abc
2.增强for循环
public static void getListData (List list) { for (String str : list) { System.out.println(str); }}
运行结果:
abc
3.Lambda表达式
public static void getListData (List list) { list.forEach(e -> { System.out.println(e); });}
运行结果:
abc
四、迭代器遍历
public static void getListData (List it = list.iterator(); while (it.hasNext()) { System.out.println(it.next()); }}
运行结果:
abc
5.List集合自己的迭代器
public static void getListData (List listIterator = list.listIterator(); while(listIterator.hasNext()){ System.out.println(listIterator.next()); }}
运行结果:
abc