【发布时间】:2021-12-30 21:35:45
【问题描述】:
我有Map<Long, Map<String, String>> map,我必须通过键过滤它并进一步获得唯一值。
我正在尝试这样做:
Map<Object, Object> resultMap = map.entrySet().stream()
.filter(x -> x.getKey().equals(filterValue))
.map(Map.Entry::getValue).collect(Collectors.toMap(k -> k,v -> v));
但我得到的是Map<Object, Object> 地图而不是Map<String, String>。
也许,有更好的方法来做到这一点。
【问题讨论】:
-
Map<String, String> result = foo.entrySet().stream().filter(x -> x.getKey().equals(filterValue)).map(Entry::getValue).map(Map::entrySet).flatMap(Set::stream).collect(Collectors.toMap(Entry::getKey, Entry::getValue));Ideone demo(请忽略运行时异常 - Ideone 应该证明编译通过) -
谢谢!这对我有用。
标签: java hashmap java-stream