【发布时间】:2019-10-03 00:59:18
【问题描述】:
我有一个包含一些值的Collection。
Collection<String> myList = new ArrayList<String>();
myList.add("a");
myList.add("b");
myList.add("c");
我创建了一个Map,它有一些值:
Map<String, String> myMap = new HashMap<String, String>();
myMap.put("r", "r");
myMap.put("s","m");
myMap.put("t", "n");
myMap.put("a", "o");
我想检查列表中的值是否在地图中作为键存在?我知道使用 Java 的方法是遍历列表并使用 myMap.containsKey() 检查地图是否包含该特定值。我想知道是否有任何使用流或 for-each 的东西可以节省我的代码行或有效的方法!感谢您考虑它。
编辑:
我想存储myList 中存在的所有元素,而myMap 中不存在这些元素。所以我的输出可以是一个列表,例如在这种情况下[b,c]。
【问题讨论】:
-
myList.forEach(x -> System.out.println(map.containsKey(x)))但它可能会为您节省 2 行代码? -
为什么要把事情复杂化?为什么不直接使用
myMap.keySet().containsAll(myList);? -
可以从列表中创建一个
Set,然后使用带有keySet参数的retainAll方法。然后就有可能知道列表中的哪些元素是映射中的键。 -
@Eugene True,但这需要 OP 澄清。
-
@SiddharthShankar 这里的预期结果是什么?您想知道列表中的 any 元素是用作映射键还是 all 都用作键?
标签: java dictionary collections java-8 hashmap