Interface Collection<E>
-
Collection是Collection体系中最上层的rootinterface,它代表一组对象集合。
-
JDK并没有直接在CollectionInterface中规定具体的方法实现,而是将具体的方法实现在其子interface中规定,如Set,List。
-
Collection一般被用来做最通用的集合对象的传递与操作。
-
Collection没有定义自己的同步策略,完全取决于具体的子对象的实现。因此在并发编程中,慎用Collection。
-
Collection并没有对equals(),hashCode()方法添加任何额外的规定,而是直接依赖于Object类。然而,其子接口往往规定equals()用来比较包含的元素的值,而非引用。
Interface List<E>
-
一个序列化的Collection。
-
支持精确的插入位置。
-
允许按index索引访问元素。
-
一般允许重复元素。
-
支持ListIterator。
-
允许包含自已本身,但equals()和hashCode()需要重写。
-
Equals()方法被重写为比较内容,相应hashCode()同样被重写。
-
是否允许null并无规定,由子类决定。
Interface Set<E>
-
不允许重复的元素,最多一个null。
-
不允许包含自己为元素。
-
可变对象作为set元素时,如果该对象被改变后影响第1条规则,则行为未定义。
-
是否允许null并无规定,由子类决定。
-
Equals()方法被重写为比较内容,相应hashCode()同样被重写。
Interface SortedSet<E>
-
一个提供完全排序的Set。
-
按Natural ordering或Comparator排序。
-
Iterator按升序遍历SortedSet。
-
其中元素必须实现Comparable interface或能够被构造函数里的comparator接受。
-
全闭空间:SortedSet<String> sub =s.subSet(low, high+"\0");
-
全开空间:SortedSet<String> sub =s.subSet(low+"\0", high);
Interface NavigableSet<E>
-
一个增加了增航能力的SortedSet。
-
允许查找指定元素附件的附合条件的最近的元素,如lower,floor, ceiling, higher。
-
提供descendingInterator。
-
默认升序,但同时提供获得降序NavigableSet的方法。
Interface Queue<E>
-
提供两套插入、删除、检查的方法,一套在错误时抛出异常,一套在错误时返回特殊值。
-
按一定的顺序进出顺序组织队列,一般为FIFO,LIFO等,无强制要求。
-
一般来说null不应该允许被插入到Queue中,因为null作为特殊值被poll()返回。
-
一般来说直接继承Object的equals(),hashCode()。
Interface Deque<E>
-
Deque: double ended queue
-
一个线性的允许两端增删的Queue。
-
提供了在两端进行增删查的方法,且支持两套方法:一套在错误时抛出异常,另一套在错误返回特殊值。
-
并不严格限制插入null,但强烈建议限制插入null。
-
一般并不重载equals(),hashCode(),直接从Object继承。
Interface BlockingQueue<E>
-
位于java.util.concurrent包内。
-
不支持插入null。
-
线程安全的。
-
与Queue相比,支持多线程相关操作:
1). 取出一个元素时,可能等待直到Queue非空;
2). 插入一个元素时,可能等待直到Queue非满;
-
支持四套增删查方法:
1). 错误时抛出异常;
2). 错误时返回特殊值;
3). 一直等待直到操作可进行;
4). 等待一定时间直到操作可进行;
Interface BlockingDeque<E>
-
位于java.util.concurrent包内。
-
不支持插入null。
-
线程安全的。
-
一般来说,同时包括BlockingQueue及Deque的接口。
Interface TransferQueue<E>
-
位于java.util.concurrent包内。
-
不支持插入null。
-
线程安全的。
-
典型地用来解决“生产者-消费者”问题。