java 8 - 有没有一种很好的方法来过滤和从地图中删除?

Bic*_*ick 4 java java-8 java-stream

我想从地图中过滤几个对象,如下所示:

  • 使用筛选结果创建新地图
  • 从原始地图中删除

目前我使用两种方法

Map<String, MyObject > map = scenarioFieldsMap.entrySet().stream()
            .filter(e -> e.getKey().contains("["))
            .collect(Collectors.toMap(Map.Entry::getKey, e -> e.getValue()));

scenarioFieldsMap.entrySet().removeIf(e -> e.getKey().contains("["));
Run Code Online (Sandbox Code Playgroud)

有没有更好的过滤和删除方法?

Era*_*ran 9

如果不是迭代所有键(或条目)而只删除其他映射中存在的键,则第二步可以更有效:

scenarioFieldsMap.keySet().removeAll(map.keySet());
Run Code Online (Sandbox Code Playgroud)

我假设您打算从原始条目中删除条目,scenarioFieldsMap而不是从您在第一步中创建的新地图中删除条目.