文档章节

TreeMap和LinkedHashMap

宋涛涛
 宋涛涛
发布于 2017/09/08 10:04
字数 414
阅读 2
收藏 0

TreeMap和LinkedHashMap 二者的底层存储结构决定了二者的功能。

TreeMap:的实现是红黑树算法的实现。

LinkedHashMap:是采用哈希表+双向循环链表的方式实现的。

LinkedHashMap保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的.也可以在构造时用带参数,按照应用次数排序。在遍历的时候会比HashMap慢,不过有种情况例外,当HashMap容量很大,实际数据较少时,遍历起来可能会比LinkedHashMap慢,因为LinkedHashMap的遍历速度只和实际数据有关,和容量无关,而HashMap的遍历速度和他的容量有关。
TreeMap实现SortMap接口,能够把它保存的记录根据键排序,默认是按键值的升序排序,也可以指定排序的比较器,当用Iterator 遍历TreeMap时,得到的记录是排过序的。

一般情况下,我们用的最多的是HashMap,HashMap里面存入的键值对在取出的时候是随机的,它根据键的HashCode值存储数据,根据键可以直接获取它的值,具有很快的访问速度。在Map 中插入、删除和定位元素,HashMap 是最好的选择。
TreeMap取出来的是排序后的键值对。但如果您要按自然顺序或自定义顺序遍历键,那么TreeMap会更好。
LinkedHashMap 是HashMap的一个子类,如果需要输出的顺序和输入的相同,那么用LinkedHashMap可以实现,它还可以按读取顺序来排列,像连接池中可以应用。

© 著作权归作者所有

宋涛涛
粉丝 4
博文 50
码字总数 15596
作品 0
昌平
高级程序员
私信 提问
HashMap源码,问map源码问题?以及LinkedHashMap,TreeMap不同

HashMap 中的 put 方法。put 时先判断是否为空,不为空就计算 hash 值,再使用 indexFor()方法计算数组下标。该方法仅有一条语句:h & (length - 1),这除了取模提高运算效率之外,还会使数据...

五六柒
07/02
15
0
Java容器源码分析-HashMap vs TreeMap vs LinkedHashMap

这里我采用的分析方式是帖子博客加上自己翻看jdk源码。有些情况下写一些测试的算法小例子加深印象。我这里只描述一下自己的总结想法 上一篇文章我们研究了set接口下的几个容器,由于其Set集合...

贾浩v
2017/10/19
26
0
LinkedHashMap和HashMap的比较使用

LinkedHashMap和HashMap的比较使用 由于现在项目中用到了LinkedHashMap,并不是太熟悉就到网上搜了一下。 运行结果如下: LinkedHashMap 6=apple 3=banana 2=pear HashMap* 2=pear 6=apple 3...

smilezhuolin
2018/07/03
0
0
LinkedHashMap和HashMap的比较使用

由于现在项目中用到了LinkedHashMap,并不是太熟悉就到网上搜了一下。 ? 运行结果如下: LinkedHashMap 6=apple 3=banana 2=pear HashMap* 2=pear 6=apple 3=banana 分析:LinkedHashmap 的特点...

zhwj407906450
2012/10/22
83
0
Java中的常用Map:HashMap、Hashtable、LinkedHashMap、Tre...

Java自带了各种Map类,可归为三种类型: 1.通用Map,用于在应用程序中管理映射,通常在 java.util 程序包中实现 HashMap Hashtable Properties LinkedHashMap IdentityHashMap TreeMap WeakH...

foxeye
2013/09/30
431
0

没有更多内容

加载失败,请刷新页面

加载更多

Mybatis Plus删除

/** @author beth @data 2019-10-17 00:30 */ @RunWith(SpringRunner.class) @SpringBootTest public class DeleteTest { @Autowired private UserInfoMapper userInfoMapper; /** 根据id删除......

一个yuanbeth
今天
4
0
总结

一、设计模式 简单工厂:一个简单而且比较杂的工厂,可以创建任何对象给你 复杂工厂:先创建一种基础类型的工厂接口,然后各自集成实现这个接口,但是每个工厂都是这个基础类的扩展分类,spr...

BobwithB
今天
5
0
java内存模型

前言 Java作为一种面向对象的,跨平台语言,其对象、内存等一直是比较难的知识点。而且很多概念的名称看起来又那么相似,很多人会傻傻分不清楚。比如本文我们要讨论的JVM内存结构、Java内存模...

ls_cherish
今天
4
0
友元函数强制转换

友元函数强制转换 p522

天王盖地虎626
昨天
5
0
js中实现页面跳转(返回前一页、后一页)

本文转载于:专业的前端网站➸js中实现页面跳转(返回前一页、后一页) 一:JS 重载页面,本地刷新,返回上一页 复制代码代码如下: <a href="javascript:history.go(-1)">返回上一页</a> <a h...

前端老手
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部