處理集合Collection的Java開源工具包,Commons Collections 4.0 發布
Apache Commons Collections是一個用來處理集合Collection的開源工具包,比如你可以用來將一個對象拷貝多份并存放到一個Bag對象中(這個看來沒有多大用處),得到兩個集合里相同的元素,刪除一個集合里的元素并返回刪除的元素,還有除了通過一個集合里的key得到value外,還可以通過value 得到key,也就是說這個集合里的value是唯一的,另外還可以將一個集合里的key和value值對調,得到一個集合里的某一key之后的另一個 key值等等。
官方網址是:http://commons.apache.org/collections/
使用示例:
/** * 通過Iterator遍歷得到一個map里的key和value */ private static void testHashedMap(){ IterableMap map = new HashedMap(); map.put("a","1"); map.put("b",new Integer(2)); MapIterator it = map.mapIterator(); while (it.hasNext()) { Object key = it.next(); Object value = it.getValue(); System.out.println(">>key>>"+key+">>value>>"+value); } } /** * 得到集合里按順序存放的key之后的某一Key */ private static void testLinkedMap(){ OrderedMap map = new LinkedMap(); map.put("FIVE", "5"); map.put("SIX", "6"); map.put("SEVEN", "7"); map.firstKey(); // returns "FIVE" map.nextKey("FIVE"); // returns "SIX" map.nextKey("SIX"); // returns "SEVEN" System.out.println(map.firstKey()+">>"+map.nextKey("FIVE")+">>"+map.nextKey("SIX")); } /** * 通過key得到value * 通過value得到key * 將map里的key和value對調 */ private static void testTreeBidiMap(){ BidiMap bidi = new TreeBidiMap(); bidi.put("SIX", "6"); bidi.get("SIX"); // returns "6" bidi.getKey("6"); // returns "SIX" // bidi.removeValue("6"); // removes the mapping BidiMap inverse = bidi.inverseBidiMap(); // returns a map with keys and values swapped System.out.println(inverse); } /** * 移除集合某一元素并返回移除的元素 */ private static void testUnboundedFifoBuffer(){ Buffer buffer = new UnboundedFifoBuffer(); buffer.add("ONE"); buffer.add("TWO"); buffer.add("THREE"); System.out.println(buffer.remove()); // removes and returns the next in order, "ONE" as this is a FIFO System.out.println(buffer.remove()); // removes and returns the next in order, "TWO" as this is a FIFO System.out.println(buffer); } /** * 得到兩個集合中相同的元素 */ private static void testCollectionUtilsRetainAll(){ List<String> list1 = new ArrayList<String>(); list1.add("1"); list1.add("2"); list1.add("3"); List<String> list2 = new ArrayList<String>(); list2.add("2"); list2.add("3"); list2.add("5"); Collection c = CollectionUtils.retainAll(list1, list2); System.out.println(c); } /** * 復制多個對象保存到Bag對象中 */ private static void testHashBag(){ Bag bag = new HashBag(); bag.add("ONE", 6); // add 6 copies of "ONE" bag.remove("ONE", 2); // removes 2 copies of "ONE" System.out.println(bag.getCount("ONE")); // returns 4, the number of copies in the bag (6 - 2) for (Iterator ite = bag.iterator();ite.hasNext();){ System.out.println(ite.next()); } } /** * @param args */ public static void main(String[] args) { // testLinkedMap(); // testTreeBidiMap(); testUnboundedFifoBuffer(); // testHashBag(); // testCollectionUtilsRetainAll(); }
Apache Commons Collections 4.0 發布,主要改進內容包括:
- 要求 Java 5 支持
- 源碼和二進制不兼容 3.x 版本
- 使用了泛型以及 Java 5 的其他語言特性,如可變參數和迭代
- 移除了廢棄的類和方法,這些類和方法已經被新的 JDK 所支持
- 使用 java.util.Queue 替代 Buffer 接口
- Added concept of split maps with respective interfaces Put / Get (see also package splitmap)
- Added new Trie interface together with an implementation of a Patricia Trie
完整的改進記錄請看:
http://commons.apache.org/collections/changes-report.html
https://dist.apache.org/repos/dist/release/commons/collections/RELEASE-NOTES.txt
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!