The Jakarta Commons Collections 组件 一些特定实现已被很好地定义与解释,可他们却不是核心集合框架(core Collections Framework)的一部分。其中的一些实现可能被包含在了同步公用类库里,随后我们将更为细致的讨论。 Jakarta Commons Collections 组件是这套特定实现的一个示例。被设计用来与J2SE 1.2 协作的Commons Collections 组件,它提供了两个List实现和八个Map实现。新的基本结构也是可用的而且非常有趣。 让我们来看一看这一组特制实现。 最易理解的是FastArrayList, FastHashMap, 和 FastTreeMap。它们分别继续了标准的ArrayList、HashMap、和TreeMap,且都提供了在多线程下安全的同步读写访问。然而,安全性是需要成本的,这样便降低了写操作的速度。当读操作是非同步时,写操作在现存结构被替代时是在一份数据备份上进行地。 Bag就象是Set,但可以重复。另外它还有两个实现:HashBag和TreeBag;后者是经排序地。 另一个新的接口是PriorityQueue。它支持可比较项和使用比较器(Comparator),所以这些项可以BinaryHeap(基于优先级的)来维护,而且随后可从该堆中删除。 剩下的就是一组特定的Map实现。它们提供了非凡目标(special-purpose)、键-值(key-value)来查找映射(maps)。 l BeanMap运用反射提供了键值对(基于JavaBean属性);该键是属性名,该值是这一属性名的值。 l ExtendedProperties继续了java.util.Properties;它为单一属性连接了多个值,而非覆写它。 l LRUMap是一个可维护最大容量的Map,而且使用了至少一个运算法则来定义在这一Map已满时要移去的节点。 l MultiHashMap有点象WeakHashMap,但它用的是SoftReference而非WeakReference。 l DoubleOrderedMap的重点在于串。它提供了一个Map来支持快速搜索(通过值和键)。但有这样一个要求:键和值必须都是唯一的。当然你用两个TreeMap对象也可以做到,但DoubleOrderedMap对每一个键值对仅保存一次。