java - 将 Integer 对象添加到 hashSet

标签 java set hashset

考虑以下代码:

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 存在于集合中),这是为什么?

最佳答案

您实际上并没有从第 14 行的集合中删除任何内容,因为您将上一行的 i2 重新分配给集合中不存在的不同内容。尝试看看当您完全删除第 13 行时会发生什么。

附言set 的 remove 方法实际上返回一个 boolean 值,因此您可以使用 System.out.println(set.remove(i2)) 查看 i2 是否真的被删除了。

关于java - 将 Integer 对象添加到 hashSet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12236490/

相关文章:

java - 如何在java中获取microsoft word文档的页数?

java - 删除 Jtable 中的行后出错

java - 在不同的线程中发出 Volley 请求

java - 更改基本 Java 动画中的颜色

c# - 当在 C# 中调用任何其他方法时,如何自动重置 bool 值?

c# - 关于获取和设置的快速问题

c# - 如何合并两个复杂类型的 HashSet 并保留第二组中的重复项?

java - 多线程环境中缓存集合的无限循环

java - Java HashSet<Long> 应该占用多少内存

javascript - JS 中性能最强的集合结构