我有 <String, Object>
类型的 haspmap .此 HashMap 包含重复项。我正在尝试使用以下方法删除重复项。但它显示错误。请在下面找到代码和错误。
这是包含数据的原始 HashMap 。
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);
}
}
}
但由于错误,我无法继续进行。你能帮我解决我做错的地方吗?谢谢。
最佳答案
这个:
Map<String , Object> map = new HashMap<String , Object>();
Set<String> valueSet = new HashSet<String>(map.values());
不起作用,因为 map.values()
返回 Collection<Object>
该集合的类型为 String
.
试试这个:
Map<String , Object> map = new HashMap<String , Object>();
Set<Object> valueSet = new HashSet<Object>(map.values());
或者:
Map<String , String> map = new HashMap<String , String>();
Set<String> valueSet = new HashSet<String>(map.values());
@coders 回应你的评论,如果你有一个 map 列表并且你想创建一组这个 map 的唯一值,你可以这样做:
ArrayList<HashMap<String, Object>> mDataList = new ArrayList<HashMap<String, Object>>();
Set<Object> valueSet = new HashSet<Object>();
for(HashMap<String, Object> map : mDataList){
valuesSet.addAll(map.values());
}
关于java - 如何从 HashMap<String, Object> 类型的 Hashmap 中删除重复项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34780984/