集合主要有2大接口,分别是Collection和Map接口。Map是键值对,而Collection是一个个对象序列。
Collection分类及介绍
- List: 有序(存入的顺序和取出的元素顺序一致,有索引,允许重复元素)
- Set:不允许有重复元素
- Queue:先进先出,队列
List
- Vector :数据结构是数组,数组长度是可变的
原理:(不断new新数组并将原数组元素复制到新数组——最早出现的集合对象)
特点和现状:线程同步—加锁变慢,故被淘汰_查和增删都慢 - ArrayList:也是数组结构,也是长度可变的。
特点:线程不同步的,替代了Vector——增删慢,查询快 - LinkedList:链表结构
特点:线程不同步——增删快,查找慢
Set
- HashSet:哈希表结构,不同步
特点:比数组的查询效率好,不保证取出和存入元素的顺序。
hashCode是为了根据元素自身的特点确定哈希值
equals是为了解决哈希冲突 - LinkedHashSet:在HashSet的基础上增加了一天双向链表,实现了元素的顺序取出和存放
- TreeSet:二叉树,对元素进行排序
特点:为了实现排序的功能
1实现Comparato接口,覆盖compare方法
2将comparator接口的对象作为参数传递给TreeSet的集合参数。
Queue
- LinkedList:其提供方法已支持队列的行为,它实现了Queue接口,可作为Queue的一种实现
- PriorityQueue:优先级队列下一个弹出的是最需要的元素(具有最高优先级),存入其中的元素按照自然顺序排序,或者根据构造队列时提供的 Comparator 进行排序
Map分类及介绍
- HashMap:基于哈希表的Map接口的实现,允许使用null值和null键,此实现是不同步的
- HashTable:和HashMap类似,主要区别就是,它不允许为null的键值,线程同步.
- TreeMap:基于红黑树的实现.
- ConcurrentHashMap:一种线程安全的Map,它不涉及同步加锁
- WeakHashMap:一种改进的HashMap,对键实行”弱引用”,如果一个key不再被外部所引用,那么该key可以被GC回收