java 中List集合详解

184 阅读2分钟

List 是 Java 中常用的数据结构之一,用于存储一组有序的元素。List 是一个接口,有多个实现类,如 ArrayList、LinkedList 等。

List 的特点

  1. 可以存储重复元素,且元素有序;
  2. 可以通过索引访问元素;
  3. 元素可以插入、删除和替换;
  4. 可以使用迭代器遍历元素。

常用方法

  1. add(E e):向列表末尾添加元素;
  2. add(int index, E element):将元素插入到指定位置;
  3. remove(int index):删除指定位置的元素;
  4. set(int index, E element):将指定位置的元素替换为给定的元素;
  5. get(int index):返回指定位置的元素;
  6. size():返回列表中元素的数量;
  7. indexOf(Object o):返回指定元素在列表中第一次出现的位置;
  8. subList(int fromIndex, int toIndex):返回列表中指定范围内的部分元素。

示例代码:

List<String> list = new ArrayList<>();  
list.add("apple");  
list.add("banana");  
list.add("orange");  
System.out.println(list); // [apple, banana, orange]  
list.add(1, "grape");  
System.out.println(list); // [apple, grape, banana, orange]  
list.remove(2);  
System.out.println(list); // [apple, grape, orange]  
System.out.println(list.get(1)); // grape  
System.out.println(list.indexOf("orange")); // 2  
List<String> subList = list.subList(0, 2);  
System.out.println(subList); // [apple, grape]  

注意事项

  1. List 是一个接口,不能直接实例化,需要使用实现类;
  2. 在遍历 List 时,如果需要删除某个元素,应该使用迭代器的 remove() 方法,否则可能会抛出 ConcurrentModificationException 异常;
  3. 在使用 subList() 方法时,返回的子列表是原列表的一个视图,对其进行修改会影响原列表。

Java 中的 List 接口有多个实现类,常用的有

  1. ArrayList:基于数组实现,支持快速随机访问,但插入和删除元素时需要移动其他元素,效率较低。
  2. LinkedList:基于链表实现,支持快速插入和删除元素,但访问元素时需要遍历链表,效率较低。
  3. Vector:与 ArrayList 类似,但是线程安全,性能较差,不推荐使用。
  4. Stack:基于 Vector 实现,提供了栈的功能,不推荐使用。

示例代码:

List<String> arrayList = new ArrayList<>();  
List<String> linkedList = new LinkedList<>();  
List<String> vector = new Vector<>();  
List<String> stack = new Stack<>();  

除了这些常用的实现类,还有一些其他的实现类,如 CopyOnWriteArrayList 等,根据具体的使用场景选择合适的实现类。