从Java中的HashMap中删除重复的值 [英] Remove duplicate values from HashMap in Java

查看:144
本文介绍了从Java中的HashMap中删除重复的值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个重复值的地图:

 (A,1); 
(B,2);
(C,2);
(D,3);
(E,3);

我想要的地图有

 (A,1); 
(B,2);
(D,3);

你知道如何摆脱重复的值?



目前,我收到'java.util.ConcurrentModificationException'错误。



谢谢。

  public static void main(String [] args){

HashMap< String,String> map = new HashMap< String,String>();
map.put(A,1);
map.put(B,2);
map.put(C,2);
map.put(D,3);
map.put(E,3);

设置< String> keys = map.keySet(); //地图中的一组键。

迭代器< String> keyIter = keys.iterator();

while(keyIter.hasNext()){
String key = keyIter.next();
String value = map.get(key);

System.out.println(key +\t+ value);

String nextValue = map.get(key);

if(value.equals(nextValue)){
map.remove(key);
}
}
System.out.println(map);
}


解决方案

使反向HashMap! / p>

  HashMap< String,String> map = new HashMap< String,String>(); 
设置< String> keys = map.keySet(); //地图中的一组键。

迭代器< String> keyIter = keys.iterator();

while(keyIter.hasNext()){
String key = keyIter.next();
String value = map.get(key);
map.add(value,key);
}

现在你有你需要的hashMap或者打印它。无论如何

在迭代hashMap时不要删除。将值保存在列表中,并在外部循环中删除它们


I have a map with duplicate values:

("A", "1");
("B", "2");
("C", "2");
("D", "3");
("E", "3");

I would like to the map to have

("A", "1");
("B", "2");
("D", "3");

Do you know how to get rid of the duplicate values?

At present, I get 'java.util.ConcurrentModificationException' error.

Thank you.

public static void main(String[] args) {

    HashMap<String, String> map = new HashMap<String, String>();
    map.put("A", "1");
    map.put("B", "2");
    map.put("C", "2");
    map.put("D", "3");
    map.put("E", "3");

    Set<String> keys = map.keySet(); // The set of keys in the map.

    Iterator<String> keyIter = keys.iterator();

    while (keyIter.hasNext()) {
        String key = keyIter.next();
        String value = map.get(key);

        System.out.println(key + "\t" + value);

        String nextValue = map.get(key);

        if (value.equals(nextValue)) {
            map.remove(key);
        }
    }
    System.out.println(map);
}

解决方案

make a reverse HashMap!

HashMap<String, String> map = new HashMap<String, String>();
Set<String> keys = map.keySet(); // The set of keys in the map.

Iterator<String> keyIter = keys.iterator();

while (keyIter.hasNext()) {
    String key = keyIter.next();
    String value = map.get(key);
    map.add(value, key);
}

now that you have the hashMap you need reverse it or print it.

in anyway do not delete while iterating hashMap. save the values in a list and delete them in an outer loop

这篇关于从Java中的HashMap中删除重复的值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆