JAVA 中对分组的使用分类

  • 分组获取随机的一个返回key value
// 保留第一个出现的值(忽略后续重复值)
Map<String, MAssessmentMethodBaseEntity> collect = mAssessmentMethodBaseEntities.stream()
    .collect(Collectors.toMap(
        MAssessmentMethodBaseEntity::getAssessmentMethodCode,  // key提取函数
        Function.identity(),                                  // value提取函数
        (existing, replacement) -> existing                   // 重复key时,保留existing(第一个)
    ));

// 或者保留最后一个出现的值(覆盖前面的值)
Map<String, MAssessmentMethodBaseEntity> collect = mAssessmentMethodBaseEntities.stream()
    .collect(Collectors.toMap(
        MAssessmentMethodBaseEntity::getAssessmentMethodCode,
        Function.identity(),
        (existing, replacement) -> replacement                // 重复key时,用新值replacement覆盖
    ));
  • 直接进行分组
// key: assessmentMethodCode,value: 所有对应的实体列表
Map<String, List<MAssessmentMethodBaseEntity>> collect = mAssessmentMethodBaseEntities.stream()
    .collect(Collectors.groupingBy(MAssessmentMethodBaseEntity::getAssessmentMethodCode));
  • 分组后赋值,赋值之后将每个分组中的value中取第一个并返回一个新数组
       // 分组后,获取每个组的第一个元素,收集为列表
        List<MAssessmentResultVo> distinctResults = assessmentResults.stream()  //assessmentResults是一个数组(MAssessmentResultVo对象)
                // 按四个字段组合分组(键为组合字符串,值为该组的所有元素)
                .collect(Collectors.groupingBy(
                        entity -> entity.getTypeName() 
                ))
                // 遍历分组后的Map,取每个组的第一个元素
                .values().stream()
                .map(group -> group.get(0)) // 取每组第一个元素(也可根据需求取特定元素)
                .collect(Collectors.toList());
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值