重大公告:2023年阿里云双11服务器限时大降价(1核2G1年仅需49元+2核4G1年100元) 速度点击查看!!!

Java基础题目汇总(面试题)—答案

1,794次阅读
没有评论

编号20210421902

Map<Short, String> map = new HashMap<>(); 
for(short i = 0; i <100; i++) {
     map.put(i, String.valueOf(i));
     map.remove(i - 1);
}
System.out.println(map.size());

这段代码输出是100,原因如下:

  • 首先JVM将i – 1自动向上转型为int
  • i – 1被自动装箱为Integer
  • HashMap在比较两个key是否相等时,首先计算其hash值,再根据hash值,将两个对象调用equals方法作比较,这里Short显然和Integer不等

还有要注意的是,Map是泛型接口,他的put方法,参数是泛型类型;而remove、containsKey、containsValue等方法,接收的参数却是Object类型,这主要是为了方便用户自定义比较两个key是否相等,重写equals和hashCode方法。

这竟然是字节的面试题,考到了肯定暴毙啊。。

arison
版权声明:本站原创文章,由arison2021-04-21发表,共计590字。
转载提示:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)