zoukankan      html  css  js  c++  java
  • 为什么HashSet里value不是null?

    今天朋友去面试,面试官问到HashSet的源码.大家都知道HashSet底层是用HashMap实现的.

    问到map存的是什么的时候,面试官说应该存的是null,我朋友说是一个对象.

    我朋友说我记得源码是这样写的,面试官说,用null效率高啊.

    然后他们讨论了十分钟...

    回去路上,和我说了这个.起先我也不明白为什么不用null呢.

    我也清楚记得HashSet的底层的value是一个final的Object对象.

    把源码拉下来,看到HashSet的remove方法时,瞬间明白了.

    显然Set的remove方法应当是

    移除一个元素,并且返回是否移除成功的boolean

    而HashSet的remove是使用HashMap实现,则是map.remove

    而map的移除会返回value,如果底层value都是存null,

    显然将无法分辨是否移除成功.

    public boolean remove(Object o) {
            return map.remove(o)==PRESENT;
        }

    结尾,感觉这种问题算是很细节的东西.有时候面试官也会想当然的.

    转载请注明来源,谢谢
  • 相关阅读:
    vue cli 3 构建vue项目
    hadoop综合大作业
    理解Mapreduce
    熟悉常用的HBase操作
    常用的HDFS操作
    爬虫大作业
    数据结构化与保存
    爬取新闻
    网络爬虫基础练习
    Hadoop综合大作业
  • 原文地址:https://www.cnblogs.com/zhhiyp/p/9720739.html
Copyright © 2011-2022 走看看