List集合(是一个接口)
是Collection接口的子接口
存储特点:存储的元素是有顺序的、不可以存储重复的元素
一、常用实现类
ArrayList类:(常用)数组结构、底层是用数组存储元素的 线程不安全的,jdk1.2开始有
LinkedList类:链表、表示双向链表和双向队列结构,采用链表实现
Vector类:古老的实现类,底层使用数组存储元素,线程安全的,jdk1.0开始有
Stack类:栈结构、底层使用数组存储
二、常用方法
ArrayList类
/添加
list.add(Object obj);//追加元素
list.add(int index,Object obj);//指定添加到指定索引位置
list.addAll(Collection xx);//添加Collection中的所有元素
//删除
list.remove(int index);//移除指定下标元素
list.removeAll(Collection xx);//移除Collection 中所有的元素
//修改
list.set(int index,Object obj);//将指定下标的元素修改成obj
//查询
list.size();//返回当前列表中的元素个数
list.get(int index);//返回指定索引的元素
list.isEmpty();//判断集合元素个数是否为零
list.toArray();//转为Object数组
list.contanis(Object obj);//判断是否存在obj
LinkedList类
//入栈
list.push("aa");
list.push("bb");
//获取栈顶元素,但不移除元素
Object peek = list.peek();//返回bb
//获取栈顶元素,且移除元素
Object pop = list.pop();//返回bb 且移除这个栈顶
//此时的栈顶元素是aa
Object peek1 = list.peek();//返回aa
//入栈
push();
//出栈且返回出栈元素(出栈一定是栈顶元素)
pop();
//返回栈顶元素
peek();
做为队列的情况下
//在队头加元素
list.addFirst("A");//A
//在队头加元素
list.addFirst("B");//B A
//在队尾加元素
list.addLast("C");//B A C
//获取头元素
list.getFirst();//B
//获取尾元素
list.getLast();//C
//删除头元素
list.removeFirst();
list.toString();//[A,C]
//删除尾元素
list.removeLast();
list.toString();//[A]
三、存储自定义类时需要注意一点
因为集合存储的是自定义类的地址值,所以就算你先存储自定义类,再修改对象的信息,集合中存储的元素也会因此改变