CollectionUtil
這個工具主要增長了對數組、集合類的操做。java
join
方法將集合轉換爲字符串,這個方法仍是挺經常使用,是StrUtil.split
的反方法。這個方法的參數支持各類類型對象的集合,最後鏈接每一個對象時候調用其toString()
方法。栗子以下:python
String[] col= new String[]{a,b,c,d,e}; String str = CollectionUtil.join(col, "#"); //str -> a#b#c#d#e
sortPageAll
、sortPageAll2
方法這個方法實際上是一個真正的組合方法,功能是:將給定的多個集合放到一個列表(List
)中,根據給定的Comparator
對象排序,而後分頁取數據。這個方法很是相似於數據庫多表查詢後排序分頁,這個方法存在的意義也是在此。sortPageAll2
功能和sortPageAll
的使用方式和結果是 同樣的,區別是sortPageAll2
使用了BoundedPriorityQueue
這個類來存儲組合後的列表,不知道哪一種性能更好一些,因此就都保留了。使用此方法,栗子以下:git
//Integer比較器 Comparator<Integer> comparator = new Comparator<Integer>(){ @Override public int compare(Integer o1, Integer o2) { return o1.compareTo(o2); } }; //新建三個列表,CollectionUtil.newArrayList方法表示新建ArrayList並填充元素 List<Integer> list1 = CollectionUtil.newArrayList(1, 2, 3); List<Integer> list2 = CollectionUtil.newArrayList(4, 5, 6); List<Integer> list3 = CollectionUtil.newArrayList(7, 8, 9); //參數表示把list1,list2,list3合併並按照從小到大排序後,取0~2個(包括第0個,不包括第2個),結果是[1,2] @SuppressWarnings("unchecked") List<Integer> result = CollectionUtil.sortPageAll(0, 2, comparator, list1, list2, list3); System.out.println(result); //輸出 [1,2]
sortEntrySetToList
方法這個方法主要是對Entry<Long, Long>
按照Value的值作排序,使用侷限性較大,我已經忘記哪裏用到過了……github
popPart
方法這個方法傳入一個棧對象,而後彈出指定數目的元素對象,彈出是指pop()
方法,會從原棧中刪掉。數據庫
newHashMap
、newHashSet
、newArrayList
方法這些方法是新建相應的數據結構,數據結構元素的類型取決於你變量的類型,栗子以下:c#
HashMap<String, String> map = CollectionUtil.newHashMap(); HashSet<String> set = CollectionUtil.newHashSet(); ArrayList<String> list = CollectionUtil.newArrayList();
append
方法在給定數組裏末尾加一個元素,其實List.add()也是這麼實現的,這個方法存在的意義是隻有少許的添加元素時使用,由於內部使用了System.arraycopy
,每調用一次就要拷貝數組一次。這個方法也是爲了在某些只能使用數組的狀況下使用,省去了先要轉成List
,添加元素,再轉成Array。數組
resize
方法從新調整數據的大小,若是調整後的大小比原來小,截斷,若是比原來大,則多出的位置空着。(貌似List在擴充的時候會用到相似的方法)數據結構
addAll
方法將多個數據合併成一個數組app
range
方法這個方法來源於Python的一個語法糖,給定開始和結尾以及步進,就會生成一個等差數列(列表)ide
int[] a1 = CollectionUtil.range(6); //[0,1,2,3,4,5] int[] a2 = CollectionUtil.range(4, 7); //[4,5,6] int[] a3 = CollectionUtil.range(4, 9, 2); //[4,6,8]
sub
方法對集合切片,其餘類型的集合會轉換成List
,封裝List.subList
方法,自動修正越界等問題,徹底避免IndexOutOfBoundsException
異常。
isEmpty
、isNotEmpty
方法判斷集合是否爲空(包括null和沒有元素的集合)。
zip
方法此方法也是來源於Python的一個語法糖,給定兩個集合,而後兩個集合中的元素一一對應,成爲一個Map。此方法還有一個重載方法,能夠傳字符,而後給定分分隔符,字符串會被split成列表。栗子:
String[] keys = new String[]{"a", "b", "c"}; Integer[] values = new Integer[]{1, 2, 3}; Map<String, Integer> map = CollectionUtil.zip(keys,values); System.out.println(map); // {b=2, c=3, a=1} String a = "a,b,c"; String b = "1,2,3"; Map<String, String> map2 = CollectionUtil.zip(a,b, ","); System.out.println(map2); // {b=2, c=3, a=1}
這個類裏的方法介紹就這些,詳細使用請參閱源碼和註釋CollectionUtil.java