package org.springside.modules.utils.collection;@b@@b@import java.util.List;@b@@b@import org.apache.commons.collections4.keyvalue.MultiKey;@b@import org.apache.commons.collections4.list.SetUniqueList;@b@import org.apache.commons.collections4.list.TreeList;@b@import org.apache.commons.collections4.map.AbstractHashedMap;@b@import org.apache.commons.collections4.map.Flat3Map;@b@import org.apache.commons.collections4.map.MultiKeyMap;@b@@b@/**@b@ * 使用CommonCollections中的扩展类型@b@ * @b@ * 参考pom.xml, 引入apache Commons Collections4依赖@b@ * @b@ * @author calvin@b@ */@b@public class CommonCollections {@b@@b@ /**@b@ * 联合多个Key来定位Value的HashMap.@b@ * @b@ * 普通HashMap,需要将多个Key拼装成一个字符串作为主键,因此MultiKeyMap尤其适合于这几个Key的类型不是String时.@b@ * @b@ * @param map 被包裹的底层HashMap,可先定义HashMap的初始大小和加载因子,可使用类型为LinkedMap@b@ */@b@ public static <K, V> MultiKeyMap<K, V> multiKeyMap(final AbstractHashedMap<MultiKey<? extends K>, V> map) {@b@ return MultiKeyMap.multiKeyMap(map);@b@ }@b@@b@ /**@b@ * 创建性能与访问速度更优的微型Map@b@ * @b@ * 当Map的元素个数<=3时,直接使用key1,key2,key3属性,节约空间与加快速度. 当Map的元素个数>3时,自动创建真正的HashMap@b@ */@b@ public static <K, V> Flat3Map<K, V> flat3Map() {@b@ return new Flat3Map<K, V>();@b@ }@b@@b@ /**@b@ * 队列内元素唯一的List, 内部集成了一个HashSet来实现.@b@ * @b@ * @param list 被包裹的底层List,可先定义ArrayList的初始长度等.@b@ */@b@ public static <E> SetUniqueList<E> setUniqueList(final List<E> list) {@b@ return SetUniqueList.setUniqueList(list);@b@ }@b@@b@ /**@b@ * ArrayList 与 LinkedList的折衷版@b@ * @b@ * ArrayList 随机访问快,当非末尾的插入删除慢. LinkedList的插入删除快,但非两端的操作都需要遍历链表到达指定下标.@b@ * @b@ * TreeList是内部结构为TreeNode的Linked List, 与Linked相仿,但能更快的到达指定下标.@b@ */@b@ public static <E> TreeList<E> treeList() {@b@ return new TreeList<E>();@b@ }@b@}