Hutool之集合工具——CollectionUtil

jopen 10年前發布 | 12K 次閱讀 Java開發 CollectionUtil

集合工具 CollectionUtil

這個工具主要增加了對數組、集合類的操作。

1. join 方法

將集合轉換為字符串,這個方法還是挺常用,是StrUtil.split的反方法。這個方法的參數支持各種類型對象的集合,最后連接每個對象時候調用其toString()方法。栗子如下:

String[] col= new String[]{a,b,c,d,e};
String str = CollectionUtil.join(col, "#"); //str -> a#b#c#d#e
2. sortPageAllsortPageAll2方法

這個方法其實是一個真正的組合方法,功能是:將給定的多個集合放到一個列表(List)中,根據給定的Comparator對象排序,然后分頁取數據。這個方法非常類似于數據庫多表查詢后排序分頁,這個方法存在的意義也是在此。sortPageAll2功能和sortPageAll的使用方式和結果是 一樣的,區別是sortPageAll2使用了BoundedPriorityQueue這個類來存儲組合后的列表,不知道哪種性能更好一些,所以就都保留了。使用此方法,栗子如下:

//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]
3. sortEntrySetToList方法

這個方法主要是對Entry<Long, Long>按照Value的值做排序,使用局限性較大,我已經忘記哪里用到過了……

4. popPart方法

這個方法傳入一個棧對象,然后彈出指定數目的元素對象,彈出是指pop()方法,會從原棧中刪掉。

5.newHashMapnewHashSetnewArrayList方法

這些方法是新建相應的數據結構,數據結構元素的類型取決于你變量的類型,栗子如下:

HashMap<String, String> map = CollectionUtil.newHashMap();
HashSet<String> set = CollectionUtil.newHashSet();
ArrayList<String> list = CollectionUtil.newArrayList();
6. append方法

在給定數組里末尾加一個元素,其實List.add()也是這么實現的,這個方法存在的意義是只有少量的添加元素時使用,因為內部使用了System.arraycopy,每調用一次就要拷貝數組一次。這個方法也是為了在某些只能使用數組的情況下使用,省去了先要轉成List,添加元素,再轉成Array。

7. resize方法

重新調整數據的大小,如果調整后的大小比原來小,截斷,如果比原來大,則多出的位置空著。(貌似List在擴充的時候會用到類似的方法)

8. addAll方法

將多個數據合并成一個數組

9. range方法

這個方法來源于Python的一個語法糖,給定開始和結尾以及步進,就會生成一個等差數列(列表)

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]
10. sub方法

對集合切片,其他類型的集合會轉換成List,封裝List.subList方法,自動修正越界等問題,完全避免IndexOutOfBoundsException異常。

11. isEmptyisNotEmpty方法

判斷集合是否為空(包括null和沒有元素的集合)。

12. 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

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!