Java面试难题与集相关

时间:2015-10-30 06:48:31

标签: java collections set

我面对面试问题。

以下代码的输出是什么。

package com.demo;

import java.util.HashSet;
import java.util.Set;

public class Test {

    public static void main(String[] args) {
    Set<Short> set=new HashSet<Short>();

        for (short i = 0; i < 10; i++){
            set.add(i);
            set.remove(i-1);
        }

        System.out.println(set.size());
    }
}

提供输出:10

但我很困惑为什么输出10。

任何人都可以回答我这里发生的事情。

由于

SItansu

2 个答案:

答案 0 :(得分:5)

表达式i-1具有int类型并被自动装箱到Integer对象,因此程序将Short对象添加到集合中,然后尝试删除Integer对象。该集合没有Integer对象,因此不会删除任何内容。

答案 1 :(得分:5)

字面值1的类型为int。因此,值i - 1的类型为int,而short的类型不是i。您因此将Short的盒装实例添加到集合中,但删除了Integer的已装箱实例。 remove()方法因此无法移除任何内容,因为Short不等于Integer