Max*_*ver 3 java list hashmap java-8 java-stream
我想用 Java 8 迭代哈希图,将其键与给定列表(包含具有键 ID 的对象)进行比较,并从哈希图中返回值,其中哈希图的键和列表中对象的键相等. 我想不通。
我尝试完成这样的事情:
someHashMap.entrySet()
.stream()
.filter(entry -> entry.getValue().equals(something.stream().iterator().next().getID()))
.map(map -> map.getValue())
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
如果您初始化了这些对象:
Map<K,V> someHashMap;
List<K> something;
Run Code Online (Sandbox Code Playgroud)
您可以Map通过迭代List这样的方式从 中获取值列表:
List<V> values = something.stream()
//.distinct() // include this if there may be duplicate keys
.filter(someHashMap::containsKey)
.map(someHashMap::get)
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
或者,如果您想迭代Map(较慢),您可以使用:
List<V> values = someHashMap.entrySet()
.stream()
.filter(e -> something.contains(e.getKey()))
.map(Map.Entry::getValue)
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)