在我有简单的地图之前,例如:Map<String, Book>。我需要向这张地图添加密钥,所以它看起来像这样Map<String, Map<String, Book>>在执行以下操作之前,我需要在某些条件下删除条目:map.entrySet()
.removeIf(matches -> getMinuteDiffrenceBetweenActualAndGivenDate(ChronoUnit.MINUTES, matches.getValue()
.getDateOfCreation()) >= 20);现在我需要做同样的事情,我不能使用,get()因为我需要迭代外部映射中的所有 value 值。我尝试这样做:map.entrySet().removeIf(matches -> matches.getValue().getValue()...但我不明白为什么我没有 getValue() 方法来获取 Book 对象。
1 回答
喵喔喔
TA贡献1735条经验 获得超5个赞
matches.getValue()
是 a Map
,而不是 a Map.Entry
,所以它没有getValue()
方法。
您可以迭代外部的值Map
并删除内部的条目Map
:
map.values() .forEach(inner -> inner.entrySet().removeIf(matches -> getMinuteDiffrenceBetweenActualAndGivenDate(ChronoUnit.MINUTES, matches.getValue().getDateOfCreation()) >= 20));
编辑:
要删除外部 Map 的条目:
map.entrySet() .removeIf(entry -> entry.getValue() .values() .stream() .anyMatch(book -> /*some boolean expression*/));
添加回答
举报
0/150
提交
取消