List
接口扩展了Collection
接口并声明了存储元素序列的集合的行为。
- 可以使用从零开始的索引,在列表中插入或访问列表中的元素。
- 列表可能包含重复的元素。
- 除了Collection接口定义的方法之外,
List
接口还定义了一些自己的方法,这些方法在下表中进行了总结。 - 如果无法修改集合,有几个
List
方法抛出UnsupportedOperationException
异常,并且当一个对象与另一个对象不兼容时会生成ClassCastException
异常。
以下是Java List接口的方法列表 -
编号 | 方法 | 描述 |
---|---|---|
1 | void add(int index, Object obj) |
将obj 插入到索引中传递的索引的调用列表中。插入点处或之外的任何预先存在的元素向上移动。因此,不会覆盖任何元素。 |
2 | boolean addAll(int index, Collection c) |
将c 的所有元素插入到索引中传递的索引的调用列表中。插入点处或之外的任何预先存在的元素向上移动。因此,不会覆盖任何元素。如果调用列表更改,则返回true ,否则返回false 。 |
3 | Object get(int index) |
返回存储在调用集合中指定索引处的对象。 |
4 | int indexOf(Object obj) |
返回调用列表中第一个obj 实例的索引。如果obj 不是列表的元素,则返回-1 。 |
5 | int lastIndexOf(Object obj) |
返回调用列表中最后一个obj 实例的索引。如果obj 不是列表的元素,则返回-1 。 |
6 | ListIterator listIterator() |
返回调用列表开头的迭代器。 |
7 | ListIterator listIterator(int index) |
返回从指定索引开始的调用列表的迭代器。 |
8 | Object remove(int index) |
从调用列表中删除位置索引处的元素,并返回已删除的元素。结果列表是压缩的。也就是说,后续元素的索引减1 。 |
9 | Object set(int index, Object obj) |
将obj 分配给调用列表中索引指定的位置。 |
10 | List subList(int start, int end) |
返回一个列表,其中包含调用列表中从start 到end-1 的元素。返回列表中的元素也由调用对象引用。 |
示例
上面的接口已经在各种类中实现,如ArrayList
或LinkedList
等。以下是从上述集合方法的各种类实现中几个方法的示例 -
import java.util.*;
/* 文件 : CollectionsDemo.java */
public class CollectionsDemo {
public static void main(String[] args) {
List a1 = new ArrayList();
a1.add("Java");
a1.add("Maxsu");
a1.add("Python");
System.out.println(" ArrayList Elements");
System.out.print("\t" + a1);
List l1 = new LinkedList();
l1.add("Java");
l1.add("Maxsu");
l1.add("Python");
System.out.println();
System.out.println(" LinkedList Elements");
System.out.print("\t" + l1);
System.out.println("Get index of Maxsu: " + a1.indexOf("Maxsu"));
System.out.println("Get index of PHP: " + a1.indexOf("PHP"));
}
}
执行上面示例代码,得到以下结果 -
ArrayList Elements
[Java, Maxsu, Python]
LinkedList Elements
[Java, Maxsu, Python]Get index of Maxsu: 1
Get index of PHP: -1