为了账号安全,请及时绑定邮箱和手机立即绑定

Peek 中的 Java 8 条件逻辑?

Peek 中的 Java 8 条件逻辑?

拉丁的传说 2023-12-13 17:17:54
我目前有一些 Java 8 代码,如下所示 - 非常确定我可以将其合并到单个调用中,但不确定如何在 Looped 映射中将条件调用到位。可以用 peek() 来做到这一点吗?或者其他 Java 8 调用?当前代码//turn above groups into a map, grouped by ResolutionMap<Long,List<LeadChannel>> mappedUp = groups                .stream()                .collect( Collectors.groupingBy( channel->channel.getResolution().getId() ) );下一位根据键的 ID 手动转换为字符串映射。Map<String, List<LeadChannel>> finalMap = new HashMap<String, List<LeadChannel>>();for ( Map.Entry<Long,List<LeadChannel>> entry : mappedUp.entrySet()) {    if(  !entry.getKey().equals( RESOLVED_STATUS ) ) {        finalMap.put( "unresolved", entry.getValue() );    } else {        finalMap.put( "resolved", entry.getValue() );    }}我正在尝试这样做: Map<String,List<LeadChannel>> mappedUp = groups                        .stream()                        .collect( Collectors.groupingBy( channel->channel.getResolution().getId() ) ).entrySet().stream().peek( if statement etc.. )
查看完整描述

1 回答

?
慕村9548890

TA贡献1884条经验 获得超4个赞

您似乎正在寻找的是一个条件groupingBy:


Map<String, List<LeadChannel>> finalMap = groups

        .stream()

        .collect(Collectors.groupingBy(channel ->

                channel.getResolution().getId().equals(RESOLVED_STATUS) ?

                        "unresolved" : "resolved"));

或者在多个管道中,了解如何对数据进行分区,然后根据问题中共享的条件进一步映射它:


Map<Boolean, List<LeadChannel>> mappedUp = groups

        .stream()

        .collect(Collectors.partitioningBy(channel -> 

                channel.getResolution().getId().equals(RESOLVED_STATUS)));


Map<String, List<LeadChannel>> finalMap = mappedUp.entrySet().stream()

        // in a similar manner you can map your current map's entries as well

        .map(e -> new AbstractMap.SimpleEntry<>(e.getKey() ? "resolved" : "unresolved", e.getValue())) 

        .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));

或者正如 Holger 建议的那样,最好使用 lambda 直接收集为


Map<String, List<LeadChannel>> finalMap = mappedUp.entrySet().stream()

        .collect(Collectors.toMap(e -> e.getKey()? "resolved": "unresolved", Map.Entry::getValue)) 



查看完整回答
反对 回复 2023-12-13
  • 1 回答
  • 0 关注
  • 56 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信