1 回答

TA貢獻(xiàn)1884條經(jīng)驗(yàn) 獲得超4個(gè)贊
您似乎正在尋找的是一個(gè)條件groupingBy:
Map<String, List<LeadChannel>> finalMap = groups
.stream()
.collect(Collectors.groupingBy(channel ->
channel.getResolution().getId().equals(RESOLVED_STATUS) ?
"unresolved" : "resolved"));
或者在多個(gè)管道中,了解如何對(duì)數(shù)據(jù)進(jìn)行分區(qū),然后根據(jù)問(wèn)題中共享的條件進(jìn)一步映射它:
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))
添加回答
舉報(bào)