给出一个代码段
package setexample;
import java.util.HashSet;
import java.util.Set;
public class Mapit {
public static void main(String[] args) {
Set<Integer> set = new HashSet<Integer>();
Integer i1 = 45;
Integer i2 = 46;
set.add(i1);
set.add(i1);
set.add(i2);
System.out.println(set.size());
set.remove(i1);
System.out.println(set.size());
i2 =47;
set.remove(i2);
System.out.println(set.size());
}
}
o / p出现2 1 1
而不是我预期的2 1 0
。是什么原因?
答案 0 :(得分:3)
i2
中之前名为Set set
的对象的引用与行i2
之后的i2 =47;
对象的引用不同。 JVM为Set
内的对象创建了一个新的引用,因此您可以将其删除,但引用Set
中的对象,您无法删除引用它的对象。它以前的名字。