1. 定义
List是Collection的子接口,元素有序并且可以重复,表示线性表。
2. 常用实现类
ArrayList:它为元素提供了下标,可以看作长度可变的数组,为顺序线性表。
LinkedList:通过代价较低的在List中间进行插入和删除操作,提供了优化的顺序访问,但是在随即访问方面相对比较慢,为链表线性表。
3. 方法
boolean add(E e):在列表末添加元素
void add(int index, E e):在指定索引处添加元素,不会覆盖原先元素
boolean addAll(int index, Collection e):在指定索引处放入集合
Object get(int index):获取指定索引的元素
E set(int index, E element):更新指定索引的元素
int indexOf(Object o):获取指定元素在集合中的索引(第一次出现的元素)
int lastIndexOf(Object o):返回此列表中最后出现的元素的索引
Object remove(int index):删除指定索引对应的元素
boolean remove(Object o):删除列表中出现的第一个指定元素
boolean contains(Object o):判断列表是否包含给定元素
List subList(int fromIndex, int toIndex):返回索引为[form,to)的元素集合
Object[] toArray():将列表转为数组
Iterator<E> iterator():列表遍历的迭代器
boolean isEmpty():判断列表是否为空
void clear():删除列表所有元素
int size():返回列表长度
其他方法及其具体说明:https://docs.oracle.com/javase/8/docs/api/
4.示例
import java.util.*; public class ListFunc {
public static void main(String[] args){
List<String> list1 = new ArrayList<>(); //在列表末尾添加元素
list1.add("1");
list1.add("2");
list1.add("3");
list1.add("4"); // 在列表指定索引处添加元素
list1.add(1,"2");
list1.add(5,"5");
list1.add(6,"6");
System.out.println(list1); // [1, 2, 2, 3, 4, 5, 6] //删除指定索引的元素
list1.remove(0);
System.out.println(list1); // [2, 2, 3, 4, 5, 6] //删除指定元素(第一个),要删除的元素可以不在列表中
list1.remove("2");
System.out.println(list1); //[2, 3, 4, 5, 6] //删除指定索引区域的多个元素
// subList = list1.subList(1,3);
// subList.clear(); // 两者等价,更改subList会改变list1
list1.subList(1,3).clear();
System.out.println(list1); //[2, 5, 6] //删除所有元素
// list1.clear();
// System.out.println(list1); //[] // 更改指定索引的元素
list1.set(0,"1");
System.out.println(list1); // [1, 5, 6] //获取指定索引处元素
String a1 = list1.get(0);
System.out.println(a1); // 1 // 获取指定元素的索引,没有该值返回-1
int index = list1.indexOf("1");
System.out.println(index); // 0 //获取指定索引区域的多个元素
List<String> list2 = list1.subList(0,2);
System.out.println(list2); // [1, 5] // 判断列表是否有某元素
boolean flag = list2.contains("5");
System.out.println(flag); // true // list转array
String[] arr2 = list2.toArray(new String[0]);
// String[] arr2 = list2.toArray(new String[list2.size()]); //两者等价
System.out.println(Arrays.toString(arr2)); // [1, 5] // iterator迭代器
Iterator<String> it = list2.iterator();
while (it.hasNext()){
System.out.print(it.next()+" "); // 1 5
} // 增强for循环
for(String str: list2){
System.out.print(str+ " "); // 1 5
}
}
}
!!!