考虑下面的代码:
6. Set<Integer> set = new HashSet<Integer>();
7. Integer i1 = 45;
8. Integer i2 = 46;
9. set.add(i1);
10. set.add(i1);
11. set.add(i2); System.out.print(set.size() + " ");
12. set.remove(i1); System.out.print(set.size() + " ");
13. i2 = 47;
14. set.remove(i2); System.out.print(set.size() + " ");
15. System.out.println(set.contains(i2));
代码输出:
``` 2 1 1 false ```
在第14行后,我认为集合大小将会是
0
,但实际上是1
。我猜测在第13行添加了一个新的对象i2
到集合中,因此我在第15行进行了测试,但返回值为false
(即集合中不存在i2
),这是为什么呢?
i2
。你修改的是引用i2
;46
仍然在集合中。 - Louis Wasserman