美文网首页
集合区别

集合区别

作者: 抓兔子的猫 | 来源:发表于2016-11-02 11:34 被阅读18次
    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报错。


    相关文章

      网友评论

          本文标题:集合区别

          本文链接:https://www.haomeiwen.com/subject/hgevuttx.html