- Map
提供了一个从键映射到值得数据结构。其中键不能重复,值可以重复。
有多个实现了该接口的类:HashMap、TreeMap、LinkedHashMap等。其中,HashMap是基于散列表实现的,TreeMap是基于红黑树实现的,LinkedHashMap是基于列表来维护内部的顺序的。
- Set
主要特点是集合中的元素不能重复,因此存入Set的每个元素都必须定义equals()方法来确保对象的唯一性。
该接口有两个实现类:HashSet和TreeSet。其中TreeSet实现了SortedSet接口,容器中的元素时有序的。
只能用Iterator实现单向遍历。
Set中没有同步方法。
- List
可以随机访问包含的元素。
按对象进入的顺序保存对象。
可以在任意位置进行插入、删除元素。
允许重复元素。
- Queue
队列,FIFO(先进先出)。
Queue使用时要尽量避免Collection的add()和remove()方法,而是要使用offer()来加入元素,使用poll()来获取并移出元素。它们的优点是通过返回值可以判断成功与否,add()和remove()方法在失败的时候会抛出异常。 如果要使用前端而不移出该元素,使用element()或者peek()方法。
值得注意的是LinkedList类实现了Queue接口,因此我们可以把LinkedList当成Queue来用。
Queue 实现通常不允许插入 null 元素,尽管某些实现(如 LinkedList)并不禁止插入 null。即使在允许 null 的实现中,也不应该将 null 插入到 Queue 中,因为 null 也用作 poll 方法的一个特殊返回值,表明队列不包含元素。
- Stack
栈,后进先出。
继承自Vector,也是同步的。