单例集合List接口

43 阅读2分钟

Java中,List是一个非常重要的有序集合接口,位于java.util包中,它继承自Collection接口,Java集合框架核心组成部分;

1. List接口特点

  • 有序:元素按照插入顺序存储,可以通过索引(从 0 开始)访问;

  • 允许重复元素:同一个对象可以多次添加到 List 中;

  • 允许null元素:大多数实现类(如 ArrayListLinkedList)都支持插入 null

  • 提供位置访问操作:支持通过索引进行增删改查(如 get(int index)add(int index, E element)

2. List常用方法

除了Collection接口中的方法,List还多了一些和顺序相关的方法,java.util.List<E> 接口中定义的主要方法(按功能分类)

2.1 添加元素

boolean add(E e) // 尾部添加元素 ,Collection就有的抽象方法
void add(int index, E element) // 在指定位置插入元素,元素后移一位 
boolean addAll(Collection<? extends E> c) // 添加整个集合到尾部 ,Collection就有的抽象方法 
boolean addAll(int index, Collection<? extends E> c) // 在指定位置插入整个集合

2.2 删除元素

E remove(int index)                  // 删除指定位置的元素,返回被删元素
boolean remove(Object o)             // 删除第一个匹配的元素(值相等)
void clear()                         // 清空列表

2.3 修改元素

E set(int index, E element)          // 替换指定位置的元素,返回旧值

2.4 查询元素

E get(int index)                     // 获取指定位置的元素
int indexOf(Object o)                // 返回首次出现的索引,不存在返回 -1
int lastIndexOf(Object o)            // 返回最后一次出现的索引
boolean contains(Object o)           // 是否包含某元素
boolean isEmpty()                    // 是否为空
int size()                           // 元素个数

2.5 批量操作 批量查询

boolean containsAll(Collection<?> c) // 是否包含集合 c 中所有元素
boolean removeAll(Collection<?> c)   // 删除所有与 c 中相同的元素
boolean retainAll(Collection<?> c)   // 仅保留 c 中包含的元素(求交集)

2.6 子列表

List<E> subList(int fromIndex, int toIndex)  
// 返回 [fromIndex, toIndex) 的子列表(原列表的视图)

2.7 转换为数组

Object[] toArray()                   // 转为 Object 数组
<T> T[] toArray(T[] a)              // 转为指定类型的数组

2.8 迭代器

Iterator<E> iterator()               // 返回普通迭代器(继承自 Collection)
ListIterator<E> listIterator()       // 返回 List 特有的双向迭代器(可向前/向后遍历、增删改)
ListIterator<E> listIterator(int index) // 从指定位置开始的 ListIterator

2.9 默认方法(JAVA8+)

void replaceAll(UnaryOperator<E> operator)     // 对每个元素应用函数进行替换
void sort(Comparator<? super E> c)            // 使用比较器排序

2.10 继承自 Collection 的方法

  • stream()parallelStream()(Java 8+)
  • spliterator()
  • equals(Object o) → 按顺序和内容比较
  • hashCode() → 基于元素计算哈希值

常见实现类

  • ArrayList:基于动态数组,随机访问快,增删慢。
  • LinkedList:基于双向链表,增删快,随机访问慢。
  • Vector:线程安全的 ArrayList(已过时,推荐用 Collections.synchronizedList)。
  • Stack:继承自 Vector,LIFO 栈(不推荐使用,建议用 Deque)。