一:List数据结构
- 在Java的集合框架中,List接口是一个有序的集合,允许元素有重复。
- List接口继承了Collection接口,提供了许多额外的功能,比如基于索引的插入、删除和访问元素等。
- 常见的List接口的实现类有ArrayList、LinkedList和Vector。
二:List接口的实现类
2.1 ArrayList
- 底层基于数组实现,查询效率高,增删效率低(因为需要移动元素)。
- 线程不安全,但性能较高。
- 适用于需要频繁查询的场景。
2.2 LinkedList
- 底层基于双向链表实现,查询效率低(需要从头或尾遍历),增删效率高。
- 提供了额外的头尾操作方法,如addFirst(), addLast(), getFirst(), getLast(), removeFirst(), removeLast()等。
- 线程不安全。
- 适用于需要频繁增删的场景,尤其是首尾操作。
三:List接口的主要方法
- void add(int index, E element): 在指定位置插入元素。
- E get(int index): 返回指定位置的元素。
- int indexOf(Object o): 返回此列表中指定元素的首次出现的索引,如果此列表不包含该元素,则返回-1。
- int lastIndexOf(Object o): 返回此列表中指定元素的最后一次出现的索引,如果此列表不包含该元素,则返回-1。
- E remove(int index): 移除指定位置的元素。
- boolean contains(Object o): 如果此列表包含指定的元素,则返回true。
- Iterator iterator(): 返回在此列表中的元素上进行迭代的迭代器
代码示例:
package chapter8;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
public class CollectionDemo {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("orange");
list.remove("apple");
String a = list.get(0);
list.add(0,"老王");
System.out.println(list);
int b = list.indexOf("banana");
System.out.println(b);
}
}