在添加新哈希图之前检查密钥是否存在

Checking the existence of the key before adding a newhashmap

我想在将项目添加到 Hashmap 之前检查密钥是否已经存在。将 1 到 20k 的键添加到 Hashmap 中,有些键可能会重复。例如,我想检查我要添加的密钥是否已经存在,如果存在,我将其写入屏幕。 我知道您可以使用 containsKey 方法检查是否存在这样的键,但我不知道如何引用前一个元素。

我完全不知道如何开始这个,因为我刚刚开始使用 beanshell:/ 预先感谢您的帮助 :D

 Map MAP_SA = new HashMap()
    
    while(iterator.hasNext()){
    org = iterator.next();
    MAP_SA.put(org.getExtended(),org.getName());
    //here I would like to check if the key repeats before adding anything to the map
    }

假设:

Keys in Maps are unique, so if you try to insert a new record with a key already present, there will be a "collision" and the value corresponding to that key in the map will be overwritten.

回答您的问题: containsKey() 是正确的方法,特别是在您在运行时进行检查的情况下,您可以在每次迭代时检查您要插入的当前值是否已经存在于整个地图中,因为 containsKey() 会探测地图中的所有键。

Map MAP_SA = new HashMap()
    
    while(iterator.hasNext()){
    org = iterator.next();

    if(!MAP_SA.containsKey(org.getExtended8())){ // check all over the map
      MAP_SA.put(org.getExtended8(),org.getName());
    }else
      System.out.println("Error: the key already exists");

    }

您还可以在 Map 接口上使用 putIfAbsent 方法(从 JDK 8 开始可用),正如名称所示,它只会添加值 仅当指定键尚不存在时.