即使从中移除对象,设置大小也不会减少

时间:2015-03-25 11:01:39

标签: java

给出一个代码段

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。是什么原因?

1 个答案:

答案 0 :(得分:3)

i2中之前名为Set set的对象的引用与行i2之后的i2 =47;对象的引用不同。 JVM为Set内的对象创建了一个新的引用,因此您可以将其删除,但引用Set中的对象,您无法删除引用它的对象。它以前的名字。