根据list中的对象某个属性 进行分组

这篇具有很好参考价值的文章主要介绍了根据list中的对象某个属性 进行分组。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1,跟据某个属性分组OfficeId

 Map<String, List<IncomeSumPojo>> collect = list.stream().collect(Collectors.groupingBy(IncomeSumPojo::getOfficeId));

2,根据某个属性分组OfficeId,汇总某个属性Money

Map<String, Double> collect = list.stream().
collect(Collectors.groupingBy(IncomeSumPojo::getOfficeId,Collectors.summingDouble(IncomeSumPojo::getMoney)));

3,根据某个属性添加条件过滤数据,

list = list.stream().filter(u -> !u.getAmount().equals("0.00")).collect(Collectors.toList());

4,判断一组对象里面有没有属性值是某个值

List<Menu> menuList = UserUtils.getMenuList();
boolean add = menuList.stream().anyMatch(m -> "plan:ctPlan:add".equals(m.getPermission()));

5,取出一组对象的某个属性组成一个新集合

List<String> tableNames=list.stream()
.map(User::getMessage)
.collect(Collectors.toList());

6.List 去重

List<String> list = useridList.stream()
      .distinct()
      .collect(Collectors.toList());
List<String> itemCodes = itemList.stream().map(OrderRebateMateGroupItemResponseDTO::getItemCode)
                .distinct().collect(Collectors.toList());

7.java stream中的findFirst

返回出现的第一个结果

List<String> lst1 = Arrays.asList("Jhonny", "David", "Jack", "Duke", "Jill","Dany","Julia","Jenish","Divya");


 
Optional<String> findFirst = lst1.parallelStream().filter(s -> s.startsWith("D")).findFirst();

 
System.out.println(findFirst.get()); //总是打印出David

8.stream自定义key,返回map

Map<String, AttStatisticsDailyResponseDTO> dailyRespMap = Optional.ofNullable(dailyRespList)
        .orElse(Collections.emptyList())
        .stream()
        .collect(Collectors.toMap(dailyResp -> {
            String keyPrefix = dailyResp.getOrgId() + "@" + dailyResp.getLoginId() + "@" + dailyResp.getStatisticsDate();
            String workType = dailyResp.getWorkType() == null ? "NO" : dailyResp.getWorkType();
            String key = keyPrefix + "@" + workType;
            log.info("打卡数据放到缓存的key={}", key);
            return key;

            //相同key,覆盖,取最后的值
        }, a->a,(V1,V2)->V1));

9.通过某个字段返回map

userList.stream().collect(Collectors.toMap(User::getId, User::getName));

10.多个字段进行分组并统计数量

List<PefsAdvanceOrderHeadReqDTO> list = new ArrayList<>();
PefsAdvanceOrderHeadReqDTO req = new PefsAdvanceOrderHeadReqDTO();
req.setSalesman("A");
req.setSalesmanCode("A1");
req.setTotal(1);
list.add(req);
req = new PefsAdvanceOrderHeadReqDTO();
req.setSalesman("A");
req.setSalesmanCode("A1");
req.setTotal(2);
list.add(req);
req = new PefsAdvanceOrderHeadReqDTO();
req.setSalesman("B");
req.setSalesmanCode("B1");
req.setTotal(1);
list.add(req);

Map<String, Double> collect = list.stream().collect(Collectors.groupingBy(o -> o.getSalesmanCode() + "@" + o.getSalesman(), Collectors.summingDouble(PefsAdvanceOrderHeadReqDTO::getTotal)));
System.out.println(JSON.toJSONString(collect));

11.JDK8的迭代方式

//JDK8的迭代方式

map.forEach((key, value) -> {

System.out.println(key + ":" + value);

});
  1. 通过某个字段 生成List
List<String> itemCodeList = list.stream().map(OrderCustDiscountItemResponseDTO::getItemCode).collect(Collectors.toList());

13 金额统计

BigDecimal adjustAmount = Optional.ofNullable(reqList).orElse(Collections.emptyList()).stream()
.map(OrderFeeAdjustImportReqDTO::getAdjustAmount)
.reduce(BigDecimal.ZERO, BigDecimal::add);

14 根据某个属性去重文章来源地址https://www.toymoban.com/news/detail-514683.html

public List<RptDayMonthTargetVO> queryTarget() {
        List<RptDayMonthTarget> list = targetService.selectMonthTarget();
        //数据去重-根据Bean对象的SupplierId属性去重
        List<RptDayMonthTarget> dbList = list.stream().filter(distinctByKey(RptDayMonthTarget::getSupplierId)).collect(Collectors.toList());return voList;
    }
  
    private static <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor) {
        Map<Object,Boolean> seen = new ConcurrentHashMap<>();
        return t -> seen.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null;
    }

到了这里,关于根据list中的对象某个属性 进行分组的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • java List<对象> 根据对象的一个属性进行去重

    1.实现一个自定义函数,该函数将用于确定两个对象是否相等,例如: 这个函数接受一个Function对象作为参数,该函数将从对象中提取唯一标识属性,并使用ConcurrentHashMap来确定是否已经处理过该属性值。   2.现在你可以使用这个函数来进行去重了,例如:  这个代码将对m

    2024年02月12日
    浏览(52)
  • JavaScript对象数组根据某个属性值筛选分类

    🤵 作者 : coderYYY 🧑 个人简介 :前端程序媛,目前主攻 web前端 ,后端辅助,其他技术知识也会偶尔分享🍀欢迎和我一起交流!🚀(评论和私信一般会回!!) 👉 个人专栏推荐 :《前端项目教程以及代码》 在开发中,这种需求还是挺常见的,常用于处理后端返回的数据

    2024年02月06日
    浏览(47)
  • java用stream根据实体的某个属性对列表进行排序

    用stream流根据实体的某个属性对列表进行排序 假设有一个实体类 Person,包含两个属性 name 和 age,你可以使用 stream 流的 sorted() 方法来按照某两个字段进行排序。以下是一个示例代码: 在上述代码中,我们将 personList 转换成流后,调用了 sorted() 方法,并且使用 Comparator 的

    2024年02月06日
    浏览(50)
  • java的list数组按数组中对象的某个属性排序

    在 Java 中,可以使用 Collections.sort() 方法和 Comparator 接口来对 List 中的对象按照对象的某个属性进行排序。以下是一个示例代码: 假设有一个 Person 类,它包含一个 name 字符串属性和一个 age 整数属性,我们可以通过对 ListPerson 类型的列表进行排序,按照 Person 对象的 age 属性

    2024年02月04日
    浏览(44)
  • java8 List根据元素对象属性去重

    1.使用Collectors.collectingAndThen链式去重 代码: main: 结果: 或者可以利用map也可以: 或: 或者不用链式也可以分开: Collectors.collectingAndThen()  函数应该最像  map and reduce  了, 它可接受两个参数,第一个参数用于  reduce 操作,而第二参数用于  map 操作 。 也就是, 先把流中

    2024年02月12日
    浏览(64)
  • java 对象list使用stream根据某一个属性转换成map的几种方式

    可以使用Java 8中的Stream API将List转换为Map,并根据某个属性作为键或值。以下是一些示例代码: 在这个示例中,将Person对象列表转换为Map,其中键为Person对象的name属性,值为Person对象本身。 在这个示例中,将Person对象列表转换为Map,其中键为Person对象本身,值为Person对象的

    2024年02月13日
    浏览(62)
  • 两个list如何根据一个list中的属性去过滤掉另一个list中不包含这部分的属性,用流实现

    要是需要GPT Plus账号的小伙伴可以联系我~ 你可以使用Java 8的流来实现这个功能。假设你有两个包含对象的List,每个对象有一个属性,你想根据一个List中的属性值来过滤掉另一个List中不包含这个属性值的对象。下面是一种使用流的方式来实现这个功能 在上面的例子中,我们

    2024年02月12日
    浏览(45)
  • Stream流中,根据对象去重+指定对象中的属性去重

    首先定义一个学生类: 在main方法中构造四个对象,其中第四个对象为重复对象,现在进行对象的去重、以及对象中某一属性的去重操作 一、根据对象去重: 以下代码写于main函数中: 运行结果如下,可以看到,stream流的distinct只是将对象去重,将相同的第三个和第四个对象

    2024年02月02日
    浏览(61)
  • 【Java 8 新特性】获取对象列表中的某个属性组成的列表

    1、用法示例 获取list中所有对象的某个属性 2、详细案例 UserEntity.java Test.java 输出结果: 1、Java 8 Stream 基本介绍 Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据。 Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 集合

    2024年02月10日
    浏览(45)
  • Collections工具类,可以使用collections工具类对代码中的list进行分组

    当我们需要对代码list进行分组的时候,有时候使用for循环会显得很蠢,那么使用Colletions工具类就会很方便,根据所需要的分类值,进行映射分组集合,以上是案例 toMap 返回map集合 MapLong, ListLong toList 返回list集合 tips stream流一样好用

    2024年03月23日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包