文档章节

LinkedHashMap 是如何保证有序的?

暗中观察
 暗中观察
发布于 07/17 06:56
字数 209
阅读 63
收藏 0
//map的遍历方法如下
  for (Map.Entry<String,Integer> entry : map.entrySet()) {
            System.out.println(entry.getKey()+":"+entry.getValue());
        }

HashMap#entrySet方法

//next逻辑如下

   final Node<K,V> nextNode() {
            Node<K,V>[] t;
            Node<K,V> e = next;
            if (modCount != expectedModCount)
                throw new ConcurrentModificationException();
            if (e == null)
                throw new NoSuchElementException();
//HashMap散列图、Hashtable散列表是按“有利于随机查找的散列(hash)的顺序”。并非按输入顺序。
            if ((next = (current = e).next) == null && (t = table) != null) {
                do {} while (index < t.length && (next = t[index++]) == null);
            }
            return e;
        }

LinkedHashMap 重写了entrySet方法

  public Set<Map.Entry<K,V>> entrySet() {
        Set<Map.Entry<K,V>> es;
        return (es = entrySet) == null ? (entrySet = new LinkedEntrySet()) : es;
    }

//next 逻辑,可以发现是按node的next指针进行遍历的
   final LinkedHashMap.Entry<K,V> nextNode() {
            LinkedHashMap.Entry<K,V> e = next;
            if (modCount != expectedModCount)
                throw new ConcurrentModificationException();
            if (e == null)
                throw new NoSuchElementException();
            current = e;
            next = e.after;
            return e;
        }

 

© 著作权归作者所有

暗中观察

暗中观察

粉丝 7
博文 129
码字总数 46254
作品 0
惠州
私信 提问
重识java-LinkedHashMap

重识java-LinkedHashMap 使用场景 如果需要使用的Map中的key无序,选择;如果要求key有序,则选择。但是选择TreeMap就会有性能问题,因为TreeMap的get操作的时间复杂度是的,相比于HashMap的...

hgfgoodcreate
2016/03/09
65
0
LinkedHashMap了解一下

前言 LinkedHashMap类继承图 LinkedHashMap简述 LinkedHashMap的属性 LinkedHashMap的构造函数 LinkedHashMap常见Api解析 总结 前言 本文使用用的是jdk1.8 LinkedHashMap类继承图 我们先来了...

HikariCP
2018/05/11
0
0
HashMap,TreeMap以及LinkedHashMap的区别

HashMap:HashMap数据是无序的,根据键的hashCode进行数据的存取,对数据的访问速度非常快,在map中插入删除 和定位元素,hashMap无疑是最好的选择, TreeMap:里面的数据是有序的,底层是一个...

J星星点灯
2018/02/03
0
0
Jdk源码学习之: LinkedHashSet

LinkedHashSet是基于HashMap和双向链表的实现。使用实例: 利用链表来记录,保证了迭代输出的有序性。其具体结构如下所示: 可以看出,其实现基本和LinkedHashMap一样。 2. 关键实现 从继承关...

孟飞阳
2016/06/25
23
0
LinkedHashMap原理分析

本文主要内容 LinkedHashMap使用 LinkedHashMap源码解析 Lru算法 今天打算看看android的图片缓存相关知识点,没想到引申到了LinkedHashMap容器了。 LinkedHashMap继承HashMap,相比于HashMap...

某昆
2018/06/05
0
0

没有更多内容

加载失败,请刷新页面

加载更多

聊聊Tomcat中的连接器(Connector)

上期回顾 上一篇文章《Tomcat在SpringBoot中是如何启动的》从main方法启动说起,窥探了SpringBoot是如何启动Tomcat的,在分析Tomcat中我们重点提到了,Tomcat主要包括2个组件,连接器(Conne...

木木匠
23分钟前
1
0
OSChina 周一乱弹 —— 熟悉的味道,难道这就是恋爱的感觉

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @xiaoshiyue :好久没分享歌了分享张碧晨的单曲《今后我与自己流浪》 《今后我与自己流浪》- 张碧晨 手机党少年们想听歌,请使劲儿戳(这里)...

小小编辑
今天
1K
18
SpringBoot中 集成 redisTemplate 对 Redis 的操作(二)

SpringBoot中 集成 redisTemplate 对 Redis 的操作(二) List 类型的操作 1、 向列表左侧添加数据 Long leftPush = redisTemplate.opsForList().leftPush("name", name); 2、 向列表右......

TcWong
今天
28
0
排序––快速排序(二)

根据排序––快速排序(一)的描述,现准备写一个快速排序的主体框架: 1、首先需要设置一个枢轴元素即setPivot(int i); 2、然后需要与枢轴元素进行比较即int comparePivot(int j); 3、最后...

FAT_mt
昨天
4
0
mysql概览

学习知识,首先要有一个总体的认识。以下为mysql概览 1-架构图 2-Detail csdn |简书 | 头条 | SegmentFault 思否 | 掘金 | 开源中国 |

程序员深夜写bug
昨天
12
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部