我无法理解它背后的逻辑.
情况1:
HashSet shortSet = new HashSet();
for (short i = 0; i < 3; i++) {
shortSet.add(i);
shortSet.remove(i - 1);
}
System.out.println(shortSet.size() + " shortSet : " + shortSet);
Run Code Online (Sandbox Code Playgroud)
操作:大小:3短集:[0,1,2]
案例2:
HashSet shortSet = new HashSet();
for (int i = 0; i < 3; i++) {
shortSet.add(i);
shortSet.remove(i - 1);
}
System.out.println("Size : "+shortSet.size() + " shortSet : " + shortSet);
Run Code Online (Sandbox Code Playgroud)
操作:大小:1短集:[2]
我只是想了解这背后的主要原因,为什么这两个输出是不同的Just By从short变为int.场景背后会发生什么.
问题是在第一种情况下,表达式i是类型short,而表达式i - 1是类型int.这些值被装箱到Short并Integer分别-的Integer是不在集合中,所以不能被去除.
您可以使用强制转换修复此问题:
for (short i = 0; i < 3; i++) {
shortSet.add(i);
shortSet.remove((short) (i - 1));
}
Run Code Online (Sandbox Code Playgroud)
在你的第二个情况下,无论是i和i - 1有型的int(当时盒装到Integer),所以也可以被删除您要添加的条目...
| 归档时间: |
|
| 查看次数: |
390 次 |
| 最近记录: |