猿问

删除另一个地图中嵌套地图的值

在我有简单的地图之前,例如: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 对象。


沧海一幻觉
浏览 72回答 1
1回答

喵喔喔

matches.getValue()是 a&nbsp;Map,而不是 a&nbsp;Map.Entry,所以它没有getValue()方法。您可以迭代外部的值Map并删除内部的条目Map:map.values() &nbsp;&nbsp;&nbsp;.forEach(inner&nbsp;->&nbsp;inner.entrySet().removeIf(matches&nbsp;->&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;getMinuteDiffrenceBetweenActualAndGivenDate(ChronoUnit.MINUTES,&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;matches.getValue().getDateOfCreation())&nbsp;>=&nbsp;20));编辑:要删除外部 Map 的条目:map.entrySet() &nbsp;&nbsp;&nbsp;.removeIf(entry&nbsp;->&nbsp;entry.getValue() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.values() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.stream() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.anyMatch(book&nbsp;->&nbsp;/*some&nbsp;boolean&nbsp;expression*/));
随时随地看视频慕课网APP

相关分类

Java
我要回答