java - 如何替换 HashMap 中的重复元素

标签 java arraylist hashmap maps

我正在尝试用新的唯一 ID 替换 HashMap 中的重复值。这样元素的顺序不会丢失,但重复的值会被更改为新的值。

HashMap<Integer,String> hm=new HashMap<Integer,String>();      
  hm.put(100,"1111111111");    
  hm.put(101,"5252");    
  hm.put(102,"1111111111");
  hm.put(103,"1111111111");

  for(int i=0;i<hm.size;hm++){
  String uuids = UUID.randomUUID().toString().replace("-", "");
  hm.put(i, uuids);
  }

最佳答案

你很接近:

Map<Integer, String> hm = new LinkedHashMap<>();
hm.put(100, "1111111111");
hm.put(101, "5252");
hm.put(102, "1111111111");
hm.put(103, "4589857");

Set<String> seen = new HashSet<>();
for (Map.Entry<Integer, String> e : hm.entrySet()) {
    if (!seen.add(e.getValue())) { //if (the 'seen' set already has that value)
        hm.replace(e.getKey(), UUID.randomUUID().toString().replace("-", ""));
    }
}

System.out.println(hm);

输出:

{100=1111111111, 101=5252, 102=ba297d9412654591826d4e496f643b4c, 103=4589857}

关于java - 如何替换 HashMap 中的重复元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54684140/

相关文章:

java - ArrayList 显示为红色且无法编译 --- java android

java - 从 Matlab 创建的 jar 文件返回值

java - 如何查找应用程序的数据库往返次数

java - 堆数据结构再堆方法

java - ArrayList索引?

go - 为什么 map 遍历是顺序的?

java - 按下按钮后 android studio 中的 Activity 不会切换

java - 在实例化时定义 Arraylist 的大小有什么好处吗

Java - 添加一个对象而不引用原始对象

java - 使用 HashMap 时出现无法解释的行为