作者:hello簞調_290 | 来源:互联网 | 2023-05-19 14:26
我有一个HashMap,我想得到一个新的HashMap,它只包含第一个HashMap中的元素,其中K属于一个特定的List.
我可以查看所有的键并填充一个新的HashMap,但我想知道是否有更有效的方法来做到这一点?
谢谢
1> T.Gounelle..:
使用Java8流,有一个功能(优雅)的解决方案.如果keys
是要保留的键列表并且map
是源Map
.
keys.stream()
.filter(map::containsKey)
.collect(Collectors.toMap(Function.identity(), map::get));
完整的例子:
List keys = new ArrayList<>();
keys.add(2);
keys.add(3);
keys.add(42); // this key is not in the map
Map map = new HashMap<>();
map.put(1, "foo");
map.put(2, "bar");
map.put(3, "fizz");
map.put(4, "buz");
Map res = keys.stream()
.filter(map::containsKey)
.collect(Collectors.toMap(Function.identity(), map::get));
System.out.println(res.toString());
打印: {2=bar, 3=fizz}
编辑filter
为地图中缺少的键添加一个