List 元素是有序的,且元素可以重复,因为该集合体系有索引
Set 元素是无序的,元素不可以重复List特有方法(方法中凡是可以操作角标的方法)
增 add(index,element) addAll(index,Collection)
删 remove(index)
改 set(index,element)
查 get(index) subList(from,to) listiterator();
常见三个子类对象
ArrayList 底层的数据结构使用数组 查询速度快
LinkedList 底层使用链表数据结构增删快,查询慢
Vector底层是数组数据结构vector 1.0是出现的 ArrayList是1.2时出现的
Vector是同步的,ArrayList线程不同步
ArrayList默认长度10,添加50%延长,创建15的数组,把以前的copy过来
vector 100%延长,
Vector有特殊之处
void addElement(E obj)
Enumeration elements()
Enumeration en = v.elements()
枚举是vector的特有取出方式 发现枚举和迭代器很想像,其实枚举和迭代是一样的,因为枚举的名称和方法的名称都过长,所以被迭代器取代1.0是只有枚举
LinkedList不同步
addFirst addLast getFirst getLast removeFirst removeLast
如果集合中没有元素
在JDK1.6出现了替代方法
offerFirst()
offLast()没有元素返回空
使用linkedList模拟一个堆栈或者队列数据结构
去除arrayList重复元素
强制类型转换
Iterator it = al.iterator();
while(it.hasNext())
{
Person p = (Person)it.next();
p.getName();
}
List集合判断元素是否相同,依据的是元素的equals方法
contains原理是 调用equals方法 remove底层也是调用equals