在Java Map中查找重复值?

Sil*_*san 7 java hashmap map

我想在a中显示值HashMap.A HashMap可能有重复的值(但不是重复键),但我想只显示一次值.

所以我应该找到是否Map有重复的值.我知道我们可以迭代Map并使用返回布尔值map.containsValue(value).我想知道是否有任何方法可以在map中找到重复值,或者我自己应该编写代码?

San*_*rma 19

一个简单的解决方案是将值列表的大小与您设置的值进行比较.

// pseudo-code
List<T> valuesList = map.values();
Set<T> valuesSet = new HashSet<T>(map.values);
// check size of both collections; if unequal, you have duplicates
Run Code Online (Sandbox Code Playgroud)


Adr*_*ter 6

例:

Map<Object, Object> map = new HashMap<Object, Object>();
map.put(1,2);
map.put(3,4);
map.put(2,2);
map.put(5,3);

Set<Object> uniqueValues = new HashSet<Object>(map.values());

System.out.println(uniqueValues);
Run Code Online (Sandbox Code Playgroud)

输出:

[2, 3, 4]
Run Code Online (Sandbox Code Playgroud)