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