我有一个包含数字列表的数组列表。我想从 HashMap 中获取所有值,该 HashMap 具有数组列表中的键。
例如,数组列表包含 1,2,3,4,5,6,7,8,9
列表
我想获取键 1,2,3,4,5,6,7,8,9
映射的所有值
所以目前我正在实现
for (i=0;i<list.size;i++){
map_new.put(list.get(),map.get(list.get()))
}
有什么有效的方法可以做到这一点吗?
最佳答案
您的代码基本上假设 map.get(list.get())
始终返回一个值,您可以尝试以下代码,该代码首先过滤非 null
值来自 list
对象,然后添加到新的 Map
:
Map<String, Integer> newMap = list.stream().
filter(key -> (map.get(key) != null)).//filter values not present in Map
collect(Collectors.toMap(t -> t, t -> map.get(t)));//now collect to a new Map
<小时/>
万一,如果 map.get(list.get())
返回 null
,您的代码会创建一个 Map
其中的 null
值,您最终可能会对其进行 null
检查,这不好,相反,您可以确保新创建的 Map
始终包含每个键的值。
关于java - 如何有效地搜索返回数组列表中键的所有值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43362070/