我有一个包含四个值a
,b
,c
,d
和只有a
的列表的哈希地图我想看看哈希是否有哈希值值a
并打印出来。
hashmap.get('data')
结果a
,b
,c
,d
列表l
正在a
我将如何仅打印值a
答案 0 :(得分:2)
如果我正确理解了您的问题,您可以使用地图的values()
方法和结果的retainAll
方法解决问题:
HashMap<Integer, String> somePairs = new HashMap<Integer, String>();
somePairs.put(1, "a");
somePairs.put(2, "b");
somePairs.put(3, "c");
somePairs.put(4, "d");
List<String> list = Arrays.asList("a");
// Start off with all values in the map:
List<String> result = new ArrayList<String>(somePairs.values());
// Keep only those values present in list
result.retainAll(list);
来自the API documentation on retainAll
:
仅保留此集合中包含在指定集合中的元素(可选操作)。换句话说,从此集合中删除未包含在指定集合中的所有元素。
答案 1 :(得分:1)
地图存储键值对。它提供了values()
方法来从地图中获取所有值的集合。
所以基本上你必须采用自己的列表,从hashmap中获取值并检查列表中的每个项目(如果它是地图值):
public static Collection<String> contains(Map<String, String> map, List<String> list) {
Collection<String> values = map.values();
Set<String> result = new HashSet<String>();
for (String listItem:list) {
if (values.contains(listItem) {
result.add(listItem);
}
}
return result; // contains a collection of all list items that are values of the map
}
答案 2 :(得分:0)
Java Map(包括HashMap)有一个keySet()方法来解锁密钥。它返回一组键。如果将List转换为Set(通过使用带有列表的HashMap构造函数),则可以使用Set的retainAll(...)方法从地图的键和列表中获取值的交集。
答案 3 :(得分:0)
基本上,您希望地图hashmap
中的值与列表l
中的值的并集。
这应该可以解决问题:
CollectionUtils.union(hashmap.values(), l)
这需要类路径上的Apache Commons Collections库,它为集合提供了许多有用的功能。