所以我在这里有一些测试代码示例:
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;的第一个实例。
有办法做到这一点吗?
答案 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