List<String> list =Arrays.asList("a","b","a","c");List<String> distinctList =CollectionUtil.distinct(list);// ["a", "b", "c"]
集合过滤
//List<String> list =Arrays.asList("a", "b", "c");//Arrays.asList()返回的集合是不可变长度的,在这里这么用会报错:UnsupportedOperationExceptionList<String> list =newArrayList<>(Arrays.asList("a","b","c"));List<String> filteredList =CollectionUtil.filter(list, e -> e.equals("a"));// ["a"]
集合转换
List<String> list =Arrays.asList("1","2","3");List<Integer> mappedList =CollectionUtil.map(list,Integer::valueOf,true);// [1, 2, 3]
List<String> list =Arrays.asList("a","b","c");String joinedString =CollectionUtil.join(list,",");// "a,b,c"
元素添加
List<String> list =newArrayList<>(Arrays.asList("1","2"CollectionUtil.addAll(list,"4");CollectionUtil.addAll(list,newString[]{"5","6"});CollectionUtil.addAll(list,Arrays.asList("7","8"));CollectionUtil.addAll(list,newHashSet<>(Arrays.asList("9"System.out.println(list);//[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]List<String> list =newArrayList<>(Arrays.asList("1","2","3"));CollectionUtil.addAllIfNotContains(list,Arrays.asList("1","2","4"));System.out.println(list);//[1, 2, 3, 4]List<String> list =newArrayList<>(Arrays.asList("1","2","3"));CollectionUtil.addIfAbsent(list,"2");//已存在不添加CollectionUtil.addIfAbsent(list,"4");System.out.println(list);//[1, 2, 3, 4]
元素删除
List<String> list =newArrayList<>(Arrays.asList("1","2","3","","4",null,"5"));CollectionUtil.removeEmpty(list);//CollectionUtil.removeBlank(list);System.out.println(list);//[1, 2, 3, 4,5]List<String> list =newArrayList<>(Arrays.asList("1","2","3","4","3","5","3","2"));CollectionUtil.removeAny(list,"3","2");System.out.println(list);//[1, 4,5]List<String> list =newArrayList<>(Arrays.asList("1","2","3","","4",null,"5"));CollectionUtil.removeNull(list);System.out.println(list);//[1, 2, 3, 4,5]//自定义条件List<String> list =newArrayList<>(Arrays.asList("1","2","3","","4",null,"5"));CollectionUtil.removeWithAddIf(list, item -> item ==null|| item.isEmpty());System.out.println(list);//[1, 2, 3, 4,5]
根据属性转Map
List<User> list =Arrays.asList(newUser(1,"张三",18,1),newUser(2,"李四",18,2),newUser(3,"王五",18,3),newUser(4,"张三",18,4),newUser(5,"李四",18,1));Map<String,User> result =CollectionUtil.fieldValueMap(list,"id");Map<String,User> result2 =CollectionUtil.fieldValueAsMap(list,"id","name");
获取元素
List<User> list =Arrays.asList(newUser(1,"张三",18,1),newUser(2,"李四",18,2),newUser(3,"王五",18,3),newUser(4,"张三",18,4),newUser(5,"李四",18,1));User result =CollectionUtil.get(list,6);//自带判空效果User result =CollectionUtil.getFirst(list);User result =CollectionUtil.getLast(list);List<User> result =CollectionUtil.getAny(list,0,2);List<Object> result =CollectionUtil.getFieldValues(list,"name");//[张三, 李四, 王五, 张三, 李四] User类要先实现Iterable<E>接口//截取集合List<User> result =CollectionUtil.sub(list,0,3);
获取最大/最小元素
List<User> list =Arrays.asList(newUser(1,"张三",19,1),newUser(2,"李四",18,2),newUser(3,"王五",16,3),newUser(4,"张三",24,4),newUser(5,"李四",17,1));//需要User先实现Comparable<e>接口User result =CollectionUtil.max(list);//张三User result =CollectionUtil.min(list);//王五
集合排序
List<User> list =Arrays.asList(newUser(1,"张三",19,1),newUser(2,"李四",18,2),newUser(3,"王五",16,3),newUser(4,"张三",24,4),newUser(5,"李四",17,1));//不需要User先实现Comparable<e>接口,默认从小到大排序List<User> result =CollectionUtil.sort(list,Comparator.comparing(User::getAge));
ld: cpu type/subtype in slice (arm64e.old) does not match fat header (arm64e) in ‘/Users/*****/MposApp/MposApp/Modules/Common/Mpos/NewLand/MESDK.framework/MESDK’ clang: error: linker command failed with exit code 1 (use -v to see invocation) 报错 解决方…
与字典类似,集合最大的特点就是唯一性。集合中所有的元素都应该是独一无二的,并且也是无序的。
创建集合
使用花括号
set {"python","Java"}
print(type(set)) 使用集合推导式
set {s for s in "python"}
print(set…