列表接口扩展了集合接口,并声明了一个存储元素序列的集合的行为。
可以通过它们在列表中的位置(使用零基数索引)来插入或访问元素。
列表可以包含重复元素。
除了集合定义的方法之外,列表定义了一些自己的方法,如下表所示。
如果列表不能被修改,则多个列表方法会抛出 UnsupportedOperationException
,并且当一个对象与另一个对象不兼容时会生成 ClassCastException
。
Java 列表接口的声明
下面是 Java 中列表接口的声明:
public interface List<E> extends Collection<E>;
创建 Java 列表
使用列表接口创建 Java 列表的语法如下:
List<Obj> list = new ArrayList<Obj> ();
列表接口示例
下面的例子演示了 Java 中列表接口的使用:
import java.util.*;
public class Main {
public static void main(String[] args) {
List<Integer> list1 = new ArrayList<Integer>();
List<Integer> list2 = new ArrayList<Integer>();
list1.add(0, 10);
list1.add(1, 20);
System.out.println("list1 : " + list1);
list2.add(10);
list2.add(20);
list2.add(30);
list1.addAll(1, list2);
System.out.println("list2 : " + list2);
list1.remove(1);
System.out.println("list1 after removing an element: " + list1);
System.out.println("list1 using get() : " + list1.get(2));
list1.set(0, 50);
System.out.println("list1 : " + list1);
}
}
输出:
list1 : [10, 20]
list2 : [10, 20, 30]
list1 after removing an element: [10, 20, 30, 20]
list1 using get() : 30
list1 : [50, 20, 30, 20]
列表接口方法
以下是 Java 中列表接口的方法:
序号 |
方法 & 描述 |
1 |
void add(int index, Object obj) 在指定的 index 处向列表中插入 obj 。任何插入点或之后存在的元素都会向上移动。因此,没有元素会被覆盖。 |
2 |
boolean addAll(int index, Collection c) 在指定的 index 处将 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) 从列表中移除指定索引处的元素,并返回被删除的元素。结果列表会被压缩。即,后续元素的索引会减一。 |
9 |
Object set(int index, Object obj) 在列表中由 index 指定的位置赋值 obj 。 |
10 |
List subList(int start, int end) 返回包含从 start 到 end-1 的列表中的元素的新列表。返回的列表中的元素也由调用对象引用。 |
更多列表接口示例
示例:使用 ArrayList 的 Java 列表
上述接口已经使用 ArrayList
实现。下面是一个例子,说明了上述集合方法的一些类实现:
import java.util.ArrayList;
import java.util.List;
public class CollectionsDemo {
public static void main(String[] args) {
List<String> a1 = new ArrayList<>();
a1.add("Zara");
a1.add("Mahnaz");
a1.add("Ayan");
System.out.println(" ArrayList Elements");
System.out.print("\t" + a1);
}
}
输出:
ArrayList Elements
[Zara, Mahnaz, Ayan]
示例:使用 LinkedList 的 Java 列表
上述接口已经使用 LinkedList
实现。下面是一个例子,说明了上述集合方法的一些类实现:
import java.util.LinkedList;
import java.util.List;
public class CollectionsDemo {
public static void main(String[] args) {
List<String> a1 = new LinkedList<>();
a1.add("Zara");
a1.add("Mahnaz");
a1.add("Ayan");
System.out.println(" LinkedList Elements");
System.out.print("\t" + a1);
}
}
输出:
LinkedList Elements
[Zara, Mahnaz, Ayan]
示例:向 Java 列表添加元素
上述接口已经使用 ArrayList
实现。下面是一个另外的例子,说明了上述集合方法的一些类实现:
import java.util.ArrayList;
import java.util.List;
public class CollectionsDemo {
public static void main(String[] args) {
List<String> a1 = new ArrayList<>();
a1.add("Zara");
a1.add("Mahnaz");
a1.add("Ayan");
System.out.println(" ArrayList Elements");
System.out.print("\t" + a1);
a1.remove(1);
System.out.println("\n ArrayList Elements");
System.out.print("\t" + a1);
}
}
输出:
ArrayList Elements
[Zara, Mahnaz, Ayan]
ArrayList Elements
[Zara, Ayan]