1、有序的结合,存储和取出元素是一致的
2、有索引
3、允许存储重复元素
操作的时候注意索引越界异常,
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class ListDemo {
public static void main(String[] args) {
//List接口 继承了 collction 继承了 Iterable可迭代接口
//列表里面的元素是可重复有索引的
List<String> list = new ArrayList<>();//多态
List<String> list2 = new ArrayList<>();
list2.add("1");
list2.add("2");
list.add("a");
list.add("b");
list.add("c");
list.add("a");
System.out.println(list);//[a, b, c, a]
//add(int index, E element) 特有的方法 在列表指定位置插入执行元素,可选操作
list.add(3,"d");
System.out.println(list);//[a, b, c, d,a]
list.addAll(list2);
System.out.println(list);//[a, b, c, d,a,1,2]
// 从此列表中移除第一次出现的指定元素(如果存在)(可选操作)。
String returnValue = list.remove(3);
System.out.println(returnValue);//d
System.out.println(list);//[a, b, c, a, 1, 2]
//set(int index, E element) 指定元素替换列表中指定位置的元素(可选操作)。
list.set(3,"A");
System.out.println(list);//[a, b, c, A, 1, 2]
//循环list的方法有三种 迭代器,for,增强for
//1.普通的for循环
for (int i = 0; i <list.size() ; i++) {
System.out.print(list.get(i));// abcA12
}
System.out.println("");
//2.迭代器
Iterator<String> it = list.iterator();
while (it.hasNext()){
System.out.print(it.next());// abcA12
}
System.out.println("");
//3.增强的for循环
for (String s : list) {
System.out.print(s);//abcA12
}
}
}
List子类 :数组结构实现类 Arraylist<>集合查询快 增删慢 因为要(copy)慢 此实现不是同步的(多线程意外执行快)
LIst子类:链表结构实现类 LinkedList<>集合查询慢 增删快此实现不是同步的(多线程意外执行快)里面包含了大量操作首尾元素的方法,使用这个集合的特有方法 不能使用多态,因为多态看不到子类特有的方法
import java.util.LinkedList;
import java.util.List;
public class LinKedListDemo {
public static void main(String[] args) {
LinkedList<Integer> lKl = new LinkedList<>();
lKl.add(1);
lKl.add(2);
lKl.add(3);
lKl.add(4);
System.out.println(lKl);//[1, 2, 3, 4]
lKl.addFirst(100);
System.out.print(lKl);//[100, 1, 2, 3, 4]
System.out.println("");
lKl.addLast(10000);//等效于add()
System.out.print(lKl);//[100, 1, 2, 3, 4, 10000]
System.out.println("");
lKl.push(5);//等效于addFirst()
System.out.print(lKl);//[5,100, 1, 2, 3, 4, 10000]
System.out.println("");
int first = lKl.getFirst();
System.out.print(first);//5
System.out.println("");
int last = lKl.getLast();
System.out.print(last);10000
System.out.println("");
lKl.clear();
System.out.print(lKl);//[]
// lKl.isEmpty() 如果列表中不含有元素则返回True
if(!lKl.isEmpty()){
lKl.getLast();
}
}
}