Java面试难题与集相关

Sit*_*nsu 5 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());
    }
}
Run Code Online (Sandbox Code Playgroud)

它给出了输出:10

但我很困惑为什么它的输出10.

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

谢谢

SItansu

Jon*_*oni 5

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


JB *_*zet 5

字面值1是类型int.值i - 1是这样类型的int,而不是类型shorti是.因此,您Short将向该集添加盒装实例,但删除了盒装实例Integer.remove()因此该方法不会移除任何东西,因为a Short不等于a Integer.