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對每一個鍵值對僅保存一次。