请考虑以下代码:
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));
Run Code Online (Sandbox Code Playgroud)
代码输出:
2 1 1 false
在第14行之后我假设尺寸会是,0但确实如此1.我想i2在第13行将一个新对象添加到集合中,所以我在第15行测试了它,但它返回false(即i2集合中没有),为什么会这样?
你永远不会从第14行的集合中删除任何东西,因为你将i2前一行重新分配给不在集合中的不同内容.尝试看看完全删除第13行时会发生什么.
PS set的remove方法实际上返回一个布尔值,因此您可以使用它System.out.println(set.remove(i2))来查看是否i2真的被删除了.
| 归档时间: |
|
| 查看次数: |
16122 次 |
| 最近记录: |