Java中HashMap和TreeMap的区别深入理解
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中HashMap和TreeMap的区别深入理解相关的知识,希望对你有一定的参考价值。
参考技术A 1 HASHMAP基于HASHCODE建立,随机一个CODE值建立。HashMap最多只允许一条记录的键为Null;允许多条记录的值为 Null;TREEMAP基于SortMap建立,是带有排序功能的MAP。
2 HASHMAP 建立插入访问速度较快。
TREEMAP 遍历速度快。
3 两者都不直接支持线程同步,如果同步,需要使用synchronizedMap使其具有同步能力。 参考技术B Set:元素是无序(存入和取出的顺序不一定一致),元素不可以重复
|--HashSet 底层的数据结构是哈希表(线程是不同步的)
HashSet是如何保证元素唯一性的?
是通过元素的两个方法,hashCode和equals来完成
如果元素的HashCode值相同,才会判断equals是否为true
如果元素的HashCode值不同,不会调用equals
注意,对于判断元素是否存在,以及删除等操作,依赖的方法是元素的hashCode和equals方法 (必须先看hashCode)
|--TreeSet 可以对Set集合的元素进行排序,线程是不同步的,
底层数据结构是二叉树,元素有序
保证元素唯一性的依据:compareTo方法return 0(它和哈希值没关系,只有HashSet才和哈希值有关)
判断元素唯一性的方式: 就是根据比较方法的返回结果是否是0,是0,就是相同元素,不存。
TreeSet排序的第一种方式,让元素自身具备比较性。
元素需要实现comparable接口,复写compareTo方法
这种方式也称为元素的自然顺序,或者叫做默认顺序
TreeSet排序的第二种方式
当元素自身不具备比较性时,或者具备的比较性不是所需要的
这时就需要让集合自身具备比较性
定义了比较器,将比较器对象作为参数传递给TreeSet集合的构造函数
在集合初始化时,就有了比较方式
当两种排序都存在时,以比较器为主
以上是关于Java中HashMap和TreeMap的区别深入理解的主要内容,如果未能解决你的问题,请参考以下文章
Java中HashMap和LinkedHashMap以及TreeMap的区别