hutool中CollUtil工具类的常用方法
hutool中CollUtil工具类的常用方法
其实Java也自带集合工具类的,这个类就是Collections。
如果在Collections里面没找到想要使用的方法,可以在CollUtil再看看。
1、< T > ArrayList< T > newArrayList(T… values)
功能:获取一个新的ArrayList。
测试代码:
@Test
public void m1() {
// 获取普通List
List<Integer> list = CollUtil.newArrayList();
list.add(1);
list.add(2);
list.add(2);
list.add(3);
System.out.println(list); // [1, 2, 2, 3]
// 还有一种方法获取新的ArrayList,也在开发中看到过
// ArrayList<Integer> nList = Lists.newArrayList();
// 这个是google-collections依赖中的,并不是hutool中的
// 获取不可修改的集合
Collection<Object> list1 = CollUtil.unmodifiable(new ArrayList<>());
list1.add(1);
//list1.set(0, 100); // 报错
Collection<Object> list2 = Collections.unmodifiableCollection(new ArrayList<>());
list2.add("hello");
//list2.set(0, "world"); // 报错
}
这里给个问题,也是我曾经想过:
为什么实际开发new 个ArrayList对象都要用工具类方法?
直接new ArrayList()不好吗?
2、< T > ArrayList< T > distinct(Collection collection)
功能:集合去重,不影响原集合数据。
测试代码:
@Test
public void m2() {
List<Integer> list = Arrays.asList(1, 2, 2, 3, 4, 4, 4, 5);
ArrayList<Integer> list1 = CollUtil.distinct(list);
List<Integer> list2 = list.stream().distinct().collect(Collectors.toList());
System.out.println(list); // [1, 2, 2, 3, 4, 4, 4, 5]
System.out.println(list1); // [1, 2, 3, 4, 5]
System.out.println(list2); // [1, 2, 3, 4, 5]
}
3、boolean isNotEmpty(Collection<?> collection)
boolean isEmpty(Collection<?> collection)
功能:判断集合是否为空。
当集合不为null,但是没有元素时,也看做是空的。
测试代码:
@Test
public void m3() {
List<Integer> list1 = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> list2 = new ArrayList<>();
List<Integer> list3 = null;
System.out.println(CollUtil.isNotEmpty(list1)); // true
System.out.println(CollUtil.isEmpty(list2)); // true
System.out.println(CollUtil.isEmpty(list3)); // true
}
4、boolean hasNull(Iterable<?> iterable)
功能:判断集合中是否含有null值的元素。
测试代码:
@Test
public void m4() {
List<Integer> list1 = null;
List<Integer> list2 = new ArrayList<>();
List<Integer> list3 = Arrays.asList(1, 2, null);
List<Integer> list4 = Arrays.asList(1, 2, 3);
System.out.println(CollUtil.hasNull(list1)); // true
System.out.println(CollUtil.hasNull(list2)); // false
System.out.println(CollUtil.hasNull(list3)); // true
System.out.println(CollUtil.hasNull(list4)); // false
// list2为false,说明这个方法只检查集合中的元素
}
5、< T > Collection< T > intersection(Collection coll1, Collection coll2, …)
功能:求多个集合的交集。
测试代码:
@Test
public void m5() {
List<Integer> list1 = Arrays.asList(1, 2, 3, 3);
List<Integer> list2 = Arrays.asList(1, 2, 3, 3, 3, 4);
List<Integer> list3 = Arrays.asList(5, 6);
Collection<Integer> interList1 = CollUtil.intersection(list1, list2);
Collection<Integer> interList2 = CollUtil.intersection(list2, list3);
System.out.println(interList1); // [1, 2, 3, 3]
System.out.println(interList2); // []
}
6、< T > Collection< T > union(Collection coll1, Collection coll2)
功能:求多个集合的并集。
测试代码:
@Test
public void m6() {
List<Integer> list1 = Arrays.asList(1, 2, 3, 3);
List<Integer> list2 = Arrays.asList(3, 4, 5, 6);
Collection<Integer> unionList = CollUtil.union(list1, list2);
System.out.println(unionList); // [1, 2, 3, 3, 4, 5, 6]
}
7、T min(Collection< T > coll),T max(Collection< T > coll)
功能:求集合中最小值,最大值。
测试代码:
@Test
public void m7() {
List<Integer> list = Arrays.asList(1, 2, 3, 3);
System.out.println(CollUtil.min(list)); // 1
System.out.println(CollUtil.max(list)); // 3
System.out.println(Collections.min(list)); // 1
System.out.println(Collections.max(list)); // 3
}
8、List< T > reverse(List< T > list)
List< T > reverseNew(List< T > list)
功能:列表翻转,reverse直接改变原列表,reverseNew不改变原列表。
测试代码:
@Test
public void m8() {
List<Integer> list = Arrays.asList(1, 2, 3, 3);
CollUtil.reverse(list); // 翻转,会改变原集合
Collections.reverse(list); // 翻转,会改变原集合
System.out.println(list); // [1, 2, 3, 3]
List<Integer> list1 = CollUtil.reverseNew(list); // 翻转,不改变原集合
System.out.println(list); // [1, 2, 3, 3]
System.out.println(list1); // [3, 3, 2, 1]
}
9、T removeAny(T collection, E… elesRemoved)
功能:移除集合中所有这些值。
测试代码:
@Test
public void m9() {
List<Integer> list = CollUtil.newArrayList(1,2,3,3);
System.out.println(list); // [1, 2, 3, 3]
List<Integer> list1 = CollUtil.removeAny(list, 3);
System.out.println(list); // [1, 2]
}
10、List< T> sort(List< T> list, Comparator c)
功能:排序,需要指定比较器。
测试代码:
@Test
public void m10() {
List<Integer> list = CollUtil.newArrayList(3,2,1,6,5,4);
List<Integer> list1 = CollUtil.newArrayList(3,2,1,6,5,4);
CollUtil.sort(list,Integer::compareTo);
System.out.println(list); // [1, 2, 3, 4, 5, 6]
Collections.sort(list1);
System.out.println(list1); // [1, 2, 3, 4, 5, 6]
}
11、List< String> sortByPinyin(List< String> list)
功能:按照拼音排序。
测试代码:
@Test
public void m11() {
List<String> list = Arrays.asList("深圳市","合肥市","南昌市");
List<String> list1 = Arrays.asList("深圳市","合肥市","南昌市");
CollUtil.sortByPinyin(list);
System.out.println(list); // [合肥市, 南昌市, 深圳市]
Collections.sort(list1, Collator.getInstance(Locale.CHINESE));
System.out.println(list1); // [合肥市, 南昌市, 深圳市]
// 故拼音排序的底层实现就是有关:Collator.getInstance(Locale.CHINESE)
}
另外:也可以使用 jdk8新特性 stream流式计算,功能也很强大。
更多推荐
所有评论(0)