自己会不断完善一些例子
1.将list<对象>中的某一个字段单独拿取出来储存到新的list中
List<对象> zws = null;
List<String> postList=zws.stream().map(对象::要储存的字段).collect(Collectors.toList());
2.将一个list<Map<String,Object>>中指定的字段的数据查询匹配出来
List<Map<String,Object>> excelMapList=集合.stream().filter(x->x.get("字段名称").toString().equals(要匹配的值)).collect(Collectors.toList());
3. 过滤一个list集合中,某一个字段重复的数据
ArrayList<ProductProcessDrawbackDto> collect = records1.stream().collect(Collectors.collectingAndThen(
Collectors.toCollection(() -> new TreeSet<>(
Comparator.comparing(
ProductProcessDrawbackDto::getId))), ArrayList::new));
过滤多个字段重复的数据
ArrayList<PatentDto> collect1 = patentDtoList.stream().collect(Collectors.collectingAndThen(
Collectors.toCollection(() -> new TreeSet<>(
Comparator.comparing(p->p.getPatentName() + ";" + p.getLevel()))), ArrayList::new));
4、对对象n个属性进行分组
一个
Map<String,List<E>> result=queryItems.stream().collect(Collectors.groupingBy(e -> e.get****()));
多个
Map<String,List<E>> result=queryItems.stream().collect(Collectors.groupingBy(e -> e.get****()+e.get****()));
5、对List<Map<String,Object>>中指定对象字段进行排序
public void sortLastOnlineList(CloudRInfoPo cloudRInfoPo, List<Map<String, Object>> result) {
if (!StringUtils.isEmpty(cloudRInfoPo.getDuration()) || "desc".equals(cloudRInfoPo.getSort())) {
result.sort(Comparator.comparing((Map<String, Object> h) -> ((String) h.get("date")))); //正序
}
if (!StringUtils.isEmpty(cloudRInfoPo.getDuration()) || "asc".equals(cloudRInfoPo.getSort())) {
result.sort(Comparator.comparing((Map<String, Object> h) -> ((String) h.get("date"))).reversed()); //倒叙
}
}
6、对两个 LIST 求差集、并集
List<String> list1 = new ArrayList();
list1.add("张三");
list1.add("王五");
list1.add("李四");
List<String> list2 = new ArrayList();
list2.add("李四");
list2.add("王二麻子");
list2.add("高启强");
// 交集
List<String> intersection = list1.stream().filter(item -> list2.contains(item)).collect(Collectors.toList());
// 差集 (list1 - list2)
List<String> reduce1 = list1.stream().filter(item -> !list2.contains(item)).collect(Collectors.toList());
// 差集 (list2 - list1)
List<String> reduce2 = list2.stream().filter(item -> !list1.contains(item)).collect(Collectors.toList());
// 并集
List<String> listAll = list1.parallelStream().collect(Collectors.toList());
List<String> listAll2 = list2.parallelStream().collect(Collectors.toList());
listAll.addAll(listAll2);
// 去重并集
List<String> listAllDistinct = listAll.stream().distinct().collect(Collectors.toList());
本文详细介绍了Java中对List、Map等集合的高效操作,包括字段抽取、条件筛选、去重排序以及集合的交并差集计算。同时,通过流处理API展示了如何实现对象属性的分组和排序,以及对List<Map<String, Object>>中的字段进行排序。这些技巧对于提升Java编程效率非常实用。
124

被折叠的 条评论
为什么被折叠?



