我正在尝试流式化以下逻辑:
我有一个整数ID到整数计数的映射。我有一个代表ID的Pojos列表。我想将两者合并,并将pojos映射到整数计数。
目前我有:
return EntryStream.of(idToCountMapping)
.mapKeys(k -> StreamEx.of(pojos).findFirst(s -> s.getId().equals(k)))
.filterKeys(Optional::isPresent)
.mapKeys(Optional::get)
.mapKeyValue(SuperCoolNewPojo::new)
.toList();
第一个
mapKeys()
调用使我印象深刻,这可能是用其他方式更好地表达的。任何帮助将是巨大的!
谢谢,
安东尼
最佳答案
虽然我无法基于streamex
回答完整性问题,但是我可以推断出并概念化为使用流的一种方法:
集合pojos
可以转换为Map
,例如:
Map<String, POJO> idToPojoMap = pojos.stream()
.collect(Collectors.toMap(Pojo::getId,
Function.identity(), (a,b) -> a);
此外,它在您的代码中的使用变得更简单,如下所示:
return EntryStream.of(idToCountMapping)
.filterKeys(k -> idToPojoMap.keySet().contains(k)) // only if part of the created map
.mapKeyValue(SuperCoolNewPojo::new)
.toList();