【发布时间】:2020-10-02 14:58:33
【问题描述】:
我下面的代码没有按预期工作,所以我需要一点帮助。我有一个Set<Confirmation> confirmationSet、List<Import> importsList、Map<String, Verification> verificationMap 和一个Map<String, String> comprehensiveMap。
我想要实现的是:
- 使用流迭代自定义对象集
(Set<Confirmation>) confirmationSet - 在每次迭代中,我都想从每个 Confirmation 对象中 getConfirmationId(),它是一个 String
- 根据confirmationId获取
Verification对象 - 从给定的 Verification 对象获取
List<Import> importsList - 使用流迭代
List<Import> importsList - 检查给定的 import.getName() 是否已经包含在
comprehensiveMap中 - 如果已经存在,则抛出异常。
- 如果不存在,则将这些属性添加到地图中
comprehensiveMap.put(import.getName(), confirmationId))
我尝试过的
confirmationSet.stream()
.map(Confirmation::getConfirmationId)
.map(confId-> verificationMap.get(confId))
.map(verifObj-> verifObj.getImportList())
.stream()
.peek(import -> Optional.of(testMap.containsKey(import.getName()))
.orElseThrow(() -> new CustomException("Map already contains this key")))
.map(import -> comprehensiveMap.put(import.getName(), confirmationId)));
运行此代码后comprehensiveMap 为空.. 我做错了什么?
我原来的代码是:
confirmationSet.foreach(confirmation -> {
String confirmationId = confirmation.getConfirmationId();
Verification verification = verificationMap.get(confirmationId);
ImportList importList = verification.getImportList;
importList.foreach(import -> {
if(!testMap.containsKey(import.getName()){
comprehensiveMap.put(import.getName(), confirmationId));
} else {
throw new CustomException("Map already contains this key")
}
}
});
但我想让它更漂亮.. 谢谢
【问题讨论】:
-
您的问题中的
testMap是什么?import是关键字,不能用作变量。还有ImportList的课程吗?不分享真正的问题,就很难找到真正的解决方案。
标签: java java-stream mapping