public interface List<E>
extends Collection<E>
有序集合(也称为序列 )。该界面的用户可以精确控制列表中每个元素的插入位置。用户可以通过整数索引(列表中的位置)访问元素,并搜索列表中的元素。
与集合不同,列表通常允许重复的元素。 更正式地,列表通常允许元素e1和e2成对使得e1.equals(e2) ,并且如果它们允许空元素,它们通常允许多个空元素。 有人可能希望实现一个禁止重复的列表,当用户尝试插入时会抛出运行时异常,但是我们预计这种使用是罕见的。 
该List接口放置额外的约定,超过在Collection指定接口上的iterator,add,remove,equals和hashCode方法合同。 其他继承方法的声明也包括在这里以方便。 
List接口提供四种位置(索引)访问列表元素的方法。 列表(如Java数组)为零。 请注意,这些操作可能与某些实现的索引值(例如LinkedList类)成时执行。 因此,如果调用者不知道实现,则通过迭代列表中的元素通常优先于索引。 
所述List接口提供了一个特殊的迭代器,称为`ListIterator,其允许元件插入和更换,并且除了该Iterator`接口提供正常操作的双向访问。 提供了一种方法来获取从列表中的指定位置开始的列表迭代器。 
List接口提供了两种方法来搜索指定的对象。 从性能角度来说,谨慎使用这些方法。 在许多实现中,它们将执行昂贵的线性搜索。 
List接口提供了两种方法来有效地插入和删除列表中任意一点的多个元素。 
注意:虽然列表允许将其自身作为元素,但建议您非常小心: equals和hashCode方法在这样的列表中不再被很好地定义。 
某些列表实现对它们可能包含的元素有限制。 例如,一些实现禁止空元素,有些实现对元素的类型有限制。 尝试添加不合格元素会引发未经检查的异常,通常为NullPointerException或ClassCastException 。 尝试查询不合格元素的存在可能会引发异常,或者可能只是返回false; 一些实现将展现出前者的行为,一些实现将展现出后者。 更一般来说,对于不完成不会导致将不合格元素插入到列表中的不合格元素的操作,可能会在执行选项时抛出异常或成功。此异常在此接口的规范中标记为“可选”。 
| boolean | add(E e)将指定的元素追加到此列表的末尾(可选操作)。 | 
|---|---|
| void | add(int index, E element)将指定的元素插入此列表中的指定位置(可选操作)。 | 
| boolean | addAll(Collection c)按指定集合的迭代器(可选操作)返回的顺序将指定集合中的所有元素附加到此列表的末尾。 | 
| boolean | addAll(int index, Collection c)将指定集合中的所有元素插入到此列表中的指定位置(可选操作)。 | 
| void | clear()从此列表中删除所有元素(可选操作)。 | 
| boolean | contains(Object o)如果此列表包含指定的元素,则返回true。 | 
| boolean | containsAll(Collection c)如果此列表包含指定集合的所有元素,则返回true。 | 
| boolean | equals(Object o)将指定的对象与此列表进行比较以获得相等性。 | 
| E | get(int index)返回此列表中指定位置的元素。 | 
| int | hashCode()返回此列表的哈希码值。 | 
| int | indexOf(Object o)返回此列表中指定元素的第一次出现的索引,如果此列表不包含元素,则返回-1。 | 
| boolean | isEmpty()如果此列表不包含元素,则返回true。 | 
| Iterator | iterator()以正确的顺序返回该列表中的元素的迭代器。 | 
| int | lastIndexOf(Object o)返回此列表中指定元素的最后一次出现的索引,如果此列表不包含元素,则返回-1。 | 
| ListIterator | listIterator()返回列表中的列表迭代器(按适当的顺序)。 | 
| ListIterator | listIterator(int index)从列表中的指定位置开始,返回列表中的元素(按正确顺序)的列表迭代器。 | 
| E | remove(int index)删除该列表中指定位置的元素(可选操作)。 | 
| boolean | remove(Object o)从列表中删除指定元素的第一个出现(如果存在)(可选操作)。 | 
| boolean | removeAll(Collection c)从此列表中删除包含在指定集合中的所有元素(可选操作)。 | 
| default void | replaceAll(UnaryOperator operator)将该列表的每个元素替换为将该运算符应用于该元素的结果。 | 
| boolean | retainAll(Collection c)仅保留此列表中包含在指定集合中的元素(可选操作)。 | 
| E | set(int index, E element)用指定的元素(可选操作)替换此列表中指定位置的元素。 | 
| int | size()返回此列表中的元素数。 | 
| default void | sort(Comparator c)使用随附的Comparator排序此列表来比较元素。 | 
| default Spliterator | spliterator()在此列表中的元素上创建一个Spliterator。 | 
| List | subList(int fromIndex, int toIndex)返回此列表中指定的fromIndex(含)和toIndex之间的视图。 | 
| Object[] | toArray()以正确的顺序(从第一个到最后一个元素)返回一个包含此列表中所有元素的数组。 | 
| T[] | toArray(T[] a)以正确的顺序返回一个包含此列表中所有元素的数组(从第一个到最后一个元素); 返回的数组的运行时类型是指定数组的运行时类型。 | 
/**
 * @program: intellij idea
 * @description:
 * add(int index, E element)`  将指定的元素插入此列表中的指定位置(可选操作)。
 * remove(int index)`  删除该列表中指定位置的元素(可选操作)。
 * set(int index, E element)`  用指定的元素(可选操作)替换此列表中指定位置的元素。
 * get(int index)`  返回此列表中指定位置的元素。
 * @author: lixy
 * @create: 2020-05-02 21:09
 **/
public class MyList {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add(0,"aa");
        list.add(1,"bb");
        list.add(2,"cc");
        list.add(3,"dd");
        System.out.println(list);
        String s = list.get(2);
        System.out.println(s);
        list.remove(2);
        System.out.println(list);
        list.set(2,"ee");
        System.out.println(list);
?
    }
}
?
运行结果:
[aa, bb, cc, dd]
cc
[aa, bb, dd]
[aa, bb, ee]
原文:https://www.cnblogs.com/lxy522/p/12819848.html