概述
java.util.List
接口继承自Collection
,且应用了泛型。在源码中其定义为:
public interface List<E> extends Collection<E> {
...
}
List主要有两个性质:
- List属于有序集合
- List允许存放重复元素
方法
由于List定义了一组有序且可重复的集合,因此在Collection接口方法外还定义了图中用黑框框出来的方法。可分为以下几类

位置相关
get(int): E
返回列表合中指定位置的元素
set(int, E): E
使用指定的元素替换列表合中指定位置的元素,并返回被替换的元素
add(int, E): void
将指定的元素插入列表中的指定位置
add(int, Collection<? extends E>): boolean
将指定集合中的所有元素插入到此列表中的指定位置。将当前位于该位置(如果有的话)的元素和随后的任何元素移动到右边(增加其索引)。新元素将按照指定集合的迭代器返回的顺序显示在此列表中。
remove(int): E
删除列表中指定位置的元素,并返回这个元素。这里有个踩过好多次的坑,要注意remove(int)
和remove(Object)
的区别,后者是在集合Collection
中定义的。特别是在声明一个泛型为Integer
的List时,即List<Integer>
。当调用remove方法时,入参是Integer
和int
类型,意义完全不一样。
搜索相关
indexOf(Object): int
返回列表中指定元素的第一次出现的索引,如果此列表不包含元素,则返回-1。
lastIndexOf(Object): int
返回列表中指定元素的最后一次出现的索引,如果此列表不包含元素,则返回-1。
迭代相关
listIterator(): ListIterator
返回列表的列表迭代器,其中ListIterator
继承自Iterator
listIterator(int): ListIterator
从列表中的指定位置开始,返回列表中的元素(按正确顺序)的列表迭代器。
子集合操作
subList(int, int): List
返回列表中指定区间的部分视图。由于返回的只是原始List的视图,因此在子列表上的非结构的更改将直接作用在原始List中,反之亦然。