繁体   English   中英

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

[英]How to remove duplicates from Hashmap of type HashMap<String, Object>?

我有<String, Object>类型的haspmap。 该哈希图包含重复项。 我正在尝试使用以下方法删除重复项。 但是它显示了一个错误。 请找到以下代码和错误。

这是包含数据的原始哈希图。

Map<String , Object> map = new HashMap<String , Object>();

我正在尝试将值添加到集合中。

Set<String> valueSet = new HashSet<String>(map.values());

map.values()它显示一个错误,指出无法解析构造函数哈希集(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针对您的评论,如果您有一个地图列表,并且想要创建一组该地图的唯一值,则可以执行以下操作:

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());
}

Hasmap无法存储重复的键。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM