1 回答

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))
添加回答
舉報