Java HashMap.remove(x)删除x的所有实例,而不是第一个

时间:2017-01-24 19:20:15

标签: java hashmap

所以我在这里有一些测试代码示例:

import java.util.*;

public class TestCode {

    static Map <String, Integer> bob = new HashMap <String, Integer> ();

    public static void main (String[] args) {

        bob.put ("J", 5);
        bob.put ("5", 12);
        bob.put ("gfdsa", 599);
        bob.put ("J", 2);
        bob.put ("J", 77);

        bob.remove ("J");

        // I want this to print '4', saying that it just removed the first instance of J.
        System.out.println (bob.size ()); 

    }
}

然而,当它运行时,它会打印2.这意味着它删除了&#34; J&#34;的所有实例。我希望它打印4,说它刚刚删除了&#34; J&#34;的第一个实例。

有办法做到这一点吗?

1 个答案:

答案 0 :(得分:0)

要了解这一点,您需要了解hashmap的工作原理吗?请检查以下链接 -   http://javarevisited.blogspot.in/2011/02/how-hashmap-works-in-java.html

简而言之,hashmap中的密钥重复是不可能的。当你想为key&#34; J&#34;添加另一个值时它用最后一个覆盖它。因此,在删除&#34; J&#34;之前,hashmap中只有3个键值对。这就是为什么在删除&#34; J&#34;。

之后,hashmap的大小为2