java - 如何从 HashMap<String, Object> 类型的 Hashmap 中删除重复项?

标签 java android hashmap

我有 <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/

相关文章:

java - org.osgi.framework.BundleException :The Activator . .for bundle .. 无效

从 Activity 标签中选择的 Android 应用程序图标名称比从应用程序标签中选择的

android - 如何强制 editText 不要以空格开头

java - 如何清除 JSONArray

map - 从两个或更多序列创建映射序列

algorithm - 在大词流中查找前 K 个频繁词

java - 为什么我在这里得到 ClassCastException?

java - 在 linux 中设置 JAVA_HOME

java - 单击列表项到一个字符串中并传输到另一个 Activity

java - 在 ArrayList Freemarker 中迭代 hashmap