java - Peek 中的 Java 8 条件逻辑?
问题描述
我目前有一些看起来像这样的 Java 8 代码 - 很确定我可以将它组合成一个调用,但不确定如何在 Looped 映射中进行条件调用。用 peek() 可以做到这一点吗?还是其他 Java 8 调用?
当前代码
//turn above groups into a map, grouped by Resolution
Map<Long,List<LeadChannel>> mappedUp = groups
.stream()
.collect( Collectors.groupingBy( channel->channel.getResolution().getId() ) );
Next bit 根据 Key 的 ID 手动转换为 String 的 Map。
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.. )
解决方案
您似乎正在寻找的是一个条件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))
推荐阅读
- phpmyadmin - 在 xampp phpmyadmin 按下“空会话数据”后,我无法看到我所有的数据库,也无法创建现在的数据库
- swing - JInternalFrame 问题
- c# - 如何在令牌响应中解码苹果登录 id_token
- sqlite - 在 SQLite 列中拆分数据
- c++ - 为什么在 C++20 中不推荐使用 volatile?
- go - Go Web Assembly 在输入 http://localhost:8080/wasm_exec.html 时无法点击运行
- django - 如何在 Django 中使用 bulk_update() 方法更新 many_to_many 关系字段?
- javascript - AngularFireAuth.auth.signInAnonymously 不返回承诺?
- java - 升级oracle驱动后oracle游标泄露
- javascript - reactjs中的登录页面验证