LinkedHashMap简明
LinkedHashMap
构造方法摘要
inkedHashMap()构造一个带默认初始容量 (16) 和加载因子 (0.75) 的空插入顺序
LinkedHashMap实例。
LinkedHashMap(int initialCapacity)构造一个带指定初始容量和默认加载因子 (0.75) 的空插入顺序
LinkedHashMap实例。
LinkedHashMap(int initialCapacity, float loadFactor)构造一个带指定初始容量和加载因子的空插入顺序 ·LinkedHashMap· 实例。
LinkedHashMap(int initialCapacity, float loadFactor, boolean accessOrder)构造一个带指定初始容量、加载因子和排序模式的空
LinkedHashMap实例。accessOreder:false(默认)为插入顺序,true为访问顺序。
LinkedHashMap(Map<? extends K,? extends V> m)构造一个映射关系与指定映射相同的插入顺序
LinkedHashMap实例。
tips
如果调用LinkedHashMap(initialCapacity, loadFactor, true),每次用get或put时,受影响的条目将从当前位置删除,并放到链表的尾部(散列表中的桶不会受影响,一个条目总位于其散列码对应的桶中)。
public class LinkedHashMapT {
public static void main(String[] args) {
LinkedHashMap<String, String> lhMap = new LinkedHashMap<>(16, 0.75F, true);
lhMap.put("111", "111");
lhMap.put("222", "222");
lhMap.put("333", "333");
lhMap.put("444", "444");
lhMap.put("555", "555");
lhMap.put("666", "666");
loopLinkedHashMap(lhMap);
loopLinkedHashMap(lhMap);
loopLinkedHashMap(lhMap);
lhMap.get("333");
loopLinkedHashMap(lhMap);
lhMap.put("222", "222");
loopLinkedHashMap(lhMap);
lhMap.put("777", "777");
loopLinkedHashMap(lhMap);
}
public static void loopLinkedHashMap(LinkedHashMap<String, String> linkedhashMap){
Set<Map.Entry<String,String>> set = linkedhashMap.entrySet();
Iterator<Map.Entry<String, String>> it = set.iterator();
while(it.hasNext()){
System.out.print(it.next() + "\t");
}
System.out.println();
}
}
111=111 222=222 333=333 444=444 555=555 666=666
111=111 222=222 333=333 444=444 555=555 666=666
111=111 222=222 333=333 444=444 555=555 666=666
111=111 222=222 444=444 555=555 666=666 333=333
111=111 444=444 555=555 666=666 333=333 222=222
111=111 444=444 555=555 666=666 333=333 222=222 777=777
LRUCache
- 构造
LinkedHashMap的子类 - 覆盖方法:
protected boolean removeEldestEntry(java.util.Map.Entry<K,V> eldest)
public class LRUCache extends LinkedHashMap
{
private static final long serialVersionUID = 1L;
protected int maxElements;
public LRUCache(int maxSize)
{
super(maxSize, 0.75F, true);
maxElements = maxSize;
}
protected boolean removeEldestEntry(java.util.Map.Entry eldest)
{
return size() > maxElements;
}
}
LinkedHashMap简明的更多相关文章
- Map 接口简明
Map 接口并没有继承Collection接口 HashMap : 哈希表数据结构,是线程不同步的,快速.允许存储 null 键,null 值.替代了 Hashtable. LinkedHashMap ...
- Java学习之LinkedHashMap学习总结
前言: 在学习LRU算法的时候,看到LruCache源码实现是基于LinkedHashMap,今天学习一下LinkedHashMap的好处以及如何实现lru缓存机制的. 需求背景: LRU这个算法就是 ...
- 计算机程序的思维逻辑 (49) - 剖析LinkedHashMap
之前我们介绍了Map接口的两个实现类HashMap和TreeMap,本节来介绍另一个实现类LinkedHashMap.它是HashMap的子类,但可以保持元素按插入或访问有序,这与TreeMap按键排 ...
- Java集合之LinkedHashMap
一.初识LinkedHashMap 上篇文章讲了HashMap.HashMap是一种非常常见.非常有用的集合,但在多线程情况下使用不当会有线程安全问题. 大多数情况下,只要不涉及线程安全问题,Map基 ...
- LinkedHashMap源码阅读笔记(基于jdk1.8)
LinkedHashMap是HashMap的子类,很多地方都是直接引用HashMap中的方法,所以需要注意的地方并不多.关键的点就是几个重写的方法: 1.Entry是继承与Node类,也就是Linke ...
- 循序渐进做项目系列(5):制作安装包,谁人都可以!——VS制作安装包简明教程
一开始让我做安装包的时候,其实我是拒绝的.因为我根本就不会做安装包.查了资料之后,我很懵,很晕,很乱,因为不清晰,不简明,不直白.然而经过一番彷徨的挣扎,我终于发现:制作安装包,谁人都可以!故挥狼毫, ...
- 图解集合6:LinkedHashMap
初识LinkedHashMap 上两篇文章讲了HashMap和HashMap在多线程下引发的问题,说明了,HashMap是一种非常常见.非常有用的集合,并且在多线程情况下使用不当会有线程安全问题. 大 ...
- 2013 duilib入门简明教程 -- 第一个程序 Hello World(3)
小伙伴们有点迫不及待了么,来看一看Hello World吧: 新建一个空的win32项目,新建一个main.cpp文件,将以下代码复制进去: #include <windows.h> #i ...
- 2013 duilib入门简明教程 -- 界面布局(9)
上一个教程实现的标题栏代码中,并没有看到处理自适应窗口大小的代码,但是窗口大小变化后,按钮的位置会跟着变化,这是因为我们将按钮放到了HorizontalLayout.VerticalLayou ...
随机推荐
- FileReader对象的readAsDataURL方法来读取图像文件
FileReader对象的readAsDataURL方法可以将读取到的文件编码成Data URL.Data URL是一项特殊的技术,可以将资料(例如图片)内嵌在网页之中,不用放到外部文件.使用Dat ...
- java基础学习系列三
产生随机数 例如 [a,b] Math.random*(b-a+1)+a 公式推算 [3,55]-----[0,52]+3 *53+3
- Acer Aspire E1 471G 加装SSD+机械盘后无法启动的问题
老笔记本 Acer Aspire E1 471G 加装了一块 SSD 作为系统盘(win10),原机械盘格式化后,装在光驱托架上作为数据盘. 可能会出现: 系统无法启动,显示找不到启动设备,并且在F2 ...
- Asp.Net Core 2.0 项目实战(9) 日志记录,基于Nlog或Microsoft.Extensions.Logging的实现及调用实例
本文目录 1. Net下日志记录 2. NLog的使用 2.1 添加nuget引用NLog.Web.AspNetCore 2.2 配置文件设置 2.3 依赖配置及调用 ...
- 【Python】 xml转json
虽然python有解析xml的模块,也有生成json的模块,但是没有把这两者连接起来的模块. 下面是以来自MIT的大神Martin Blech写的一个方便的模块,供大家参考.也别忘了在用之前先拜谢作者 ...
- 小细节,大用途,35 个 Java 代码性能优化总结!
前言: 代码优化,一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用 ...
- Java创建线程的三种方式
一.继承Thread类创建线程类 (1)定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务.因此把run()方法称为执行体. (2)创建Thread子类的实 ...
- [UWP]创建一个ProgressControl
1. 前言 博客园终于新增了UWP的分类,我来为这个分类贡献第一篇博客吧. UWP有很多问题,先不说生态的事情,表单.验证.输入.设计等等一堆基本问题缠身.但我觉得最应该首先解决的绝对是Blend,那 ...
- python爬虫遇到状态码304,705
304状态码是什么? 如果客户端发送了一个带条件的GET 请求且该请求已被允许,而文档的内容(自上次访问以来或者根据请求的条件)并没有改变,则服务器应当返回这个304状态码.简单的表达就是:客户端已经 ...
- 『练手』手写一个独立Json算法 JsonHelper
背景: > 一直使用 Newtonsoft.Json.dll 也算挺稳定的. > 但这个框架也挺闹心的: > 1.影响编译失败:https://www.cnblogs.com/zih ...