【发布时间】:2025-12-27 19:05:13
【问题描述】:
我有<String, Object> 类型的haspmap。此哈希图包含重复项。我正在尝试以下方法来删除重复项。但它显示一个错误。请找到下面的代码和错误。
这是包含数据的原始哈希图。
Map<String , Object> map = new HashMap<String , Object>();
我正在尝试将值添加到集合中。
Set<String> valueSet = new HashSet<String>(map.values());
在map.values() 中显示一个错误,指出无法解析构造函数 hashset(java.util.collection)
在此之后,我将添加以下代码以消除重复项。
Iterator<String> it = valueSet.iterator();
Map<Integer , String> uniqueMap = new HashMap<Integer , String>();
while(it.hasNext()){
String value = it.next();
for(Entry<Integer , String> e : map.entrySet()){
if(value.equals(e.getValue()) && !uniqueMap.containsValue(value)){
uniqueMap.put(e.getKey(), value);
}
}
}
但由于错误,我无法继续进行。你能帮我解决我做错的地方吗?谢谢。
【问题讨论】:
-
A
Map不能有重复的键,但可能有重复的值。如果您想要/需要同时拥有唯一键和值/您可以使用 Google Guava 库中的 BiMap 或使用此算法:1)创建一个新地图,2)为原始地图中的每个键/值对,存储它们在新映射中使用值作为键,键作为值 3)将新映射中的值存储回旧映射中