java - 如何有效地搜索返回数组列表中键的所有值

标签 java arraylist hashmap

我有一个包含数字列表的数组列表。我想从 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/

相关文章:

java - 这个散列探测方法是如何二次的?

java - 如何使用 HashMap 作为访问和复制列表中的项目的方法?

java - Java中如何使用静态扩展变量?

java - 使用数字格式检查给定字符串是否是有效货币

java - 在 selenium 的表中断言多个值

java - 适合在数组列表中使用的泛型

java - 在存储在 HashMap 中的 ArrayList 中搜索值

java - 登录后禁用 JSP 中的后退按钮?

Java List.add() UnsupportedOperationException

java - 使用 apache POI 将 hashmap 的每个元素(键值对)写入同一工作簿中的不同 Excel 工作表