集合区别

20160124221843905.png
Paste_Image.png
QQ截图20161102140318.png

hashmap 允许存在一个null值,重复元素覆盖
当插入空值时直接去遍历table[0]Entry链表,寻找e.key==null的Entry或者没有找到遍历结束如果找到了e.key==null,就保存null值对应的原值oldValue,然后覆盖原值,并返回oldValue ,如果在table[0]Entry链表中没有找到就调用addEntry方法添加一个key为null的Entry。


HashSet 允许一个null,重复元素不会被插入
实现了Set接口,它不允许集合中有重复的值,当我们提到HashSet时,第一件事情就是在将对象存储在HashSet之前,要先确保对象重写equals()和hashCode()方法,这样才能比较对象的值是否相等,以确保set中没有储存相等的对象。如果我们没有重写这两个方法,将会使用这个方法的默认实现。


treemap 插入元素通过比较器比较,不要插null
中对于存储进TreeMap及TreeSet中的元素,要求元素自身具有比较性或者在创建集合时传入一个比较器对象。当调用TreeMap.put(key,value)时,如果root为空,也就是集合中没有元素时,不管key值是否为null,TreeMap都创建一个节点并将该节点作为树根节点存入集合中。当第二次存入key为null的键值对时,此时如果集合自身不带比较器,那么调用元素自身的compareTo()方法,即key.compareTo()方法,此时必然产生NullPointerException异常。


treeset 同上
同 treemap 允许第一个元素为null,再插入要compareTo报错。


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、基本数据类型 注释 单行注释:// 区域注释:/* */ 文档注释:/** */ 数值 对于byte类型而言...
    龙猫小爷阅读 9,757评论 0 16
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 32,716评论 18 399
  • java笔记第一天 == 和 equals ==比较的比较的是两个变量的值是否相等,对于引用型变量表示的是两个变量...
    jmychou阅读 5,427评论 0 3
  • 集合类简介 为什么出现集合类?面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就要对对象进...
    阿敏其人阅读 5,319评论 0 7
  • 姓名:李念鑫 学号:17011210431 【嵌牛导读】:前几天华为在德国发布了华为年度旗舰,华为mate10是否...
    LNX_8386阅读 1,364评论 0 0

友情链接更多精彩内容