首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >与set相关的Java面试难题

与set相关的Java面试难题
EN

Stack Overflow用户
提问于 2015-10-30 06:48:31
回答 2查看 245关注 0票数 5

我面临下面的面试问题。

下面代码的输出是什么?

代码语言:javascript
复制
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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-10-30 06:54:59

文字值1int类型。因此,i - 1值是int类型的,而不是short类型的i值。这样,您就可以将Short的装箱实例添加到集合中,但移除Integer的装箱实例。因此,remove()方法不移除任何内容,因为Short不等于Integer

票数 5
EN

Stack Overflow用户

发布于 2015-10-30 06:54:55

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

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33430239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档