Collection
- 只能存引用类型
- 分为Collection和Map两大类
- 实现Iterable接口,可迭代
- 删除多个相同对象用迭代器迭代删除
- 基本方法:add() remove() contains() iterator() ->hasNext()->next()->remove
List
- 有序,存储顺序与添加顺序相同
- 可存储相同元素
- 增加了针对索引的操作 add() remove() get() set()
- 注意!!!调用contains和remove方法时,需要重写对象的equals方法
- sort函数,形参comparator接口,在调用时,可以传递Comparator的匿名内部类对象
o1>02,升序
o2>o1,降序
ArrayList
- 底层是数组
- 易于访问不易于修改,如插入元素:可能需要扩容复制、移动
- 初始化大小为10,扩容1.5倍大小
Vector
- 底层是数组
- 易于访问不易于修改,如插入元素:可能需要扩容复制、移动
- 初始化大小为10,扩容2倍大小
- 线程安全
LinkedList
- 底层是双向链表,访问慢,添加删除效率高
- 添加了针对第一个/最后一个元素的操作 removeFirst() removeLast() addFirst() addLast() getLast() getFirst()
- 模拟栈:push() pop()
- 模拟队列:offer() poll()
应用场景
- 存储可以重复的数据,选择List集合
- 访问为主:ArrayList
- 添加/删除为主:LinkedList
- 多线程:CopyOnWriteArrayList
Set
- 无序,存储顺序与添加顺序可能相同
- 不可以存储相同元素
HashSet
- 底层hashmap
- 向hashset添加元素就是向底层的hashmap添加键
- hashset是hashmap键的集合
TreeSet
- 底层Treemap
- 向treeset添加元素就是向底层的treemap添加键
- treeset是treemap的集合
- TreeSet实现了SortedSet接口,可以对集合中元素自然排序,要求元素是可比较的:comparable
- (1)在构造方法中,指定comparator比较器
- (2)没有通过构造方法,要求元素类实现comparable接口
- 注意!!!TreeSet先选择comparator,没有再看元素类有没有comparable
应用场景
- 存储数据不可以重复,选择Set集合
- 不需要对Set集合元素排序:HashSet
- 需要对Set集合元素排序:TreeSet
- 多线程:不需要排序:CopyOnWriteArraySet,需要排序:ConcurrentSkipListSet
注意
- 在TreeSet中,contains、remove方法通过Compatrator/Comparable的比较结果是否为0判断,比较结果为0就是同一个对象
- 创建TreeSet不在构造方法中指定comparator,要求元素实现Comparable接口
- HashSet比较元素需要调用equals方法,如存储自定义对象需要重写equals方法