HashMap与TreeMap的区别与联系

一.继承实现关系

都继承了:AbstractMap
都实现了:Cloneable, java.io.Serializable
TreeMap 实现了 NavigableMap
HashMap 实现了 Map

二.存储方式

HashMap:
在这里插入图片描述
TreeMap:一个内部类 Entry
在这里插入图片描述

三.判断重复的机制

HashMap:基于hashCode

key:判断是否重复,先判断hashCode,如果hashCode相等(哈希碰撞,哈希冲突),在判断equals比较,如果也是相等,则覆盖。否则形成链表,在链表末尾追加,当等于8个,优化为红黑树,当减少到6个,退为链表存放key位置的计算方式: hashCode%map.length扩容,*2的方式扩容,扩容后,重新计算hashCode值
在这里插入图片描述

TreeMap:基于红黑树

判断key重复的机制跟TreeSet一样,且都有自然和定制排序功能自然排序:必须,元素实现Comparable接口,重写compareTo方法定制排序:必须满足,在创建TreeMap对象的时候,传入一个Comparator接口实现类对象,重写compare方法
在这里插入图片描述

相关推荐
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页