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简明的更多相关文章

  1. Map 接口简明

    Map 接口并没有继承Collection接口 HashMap : 哈希表数据结构,是线程不同步的,快速.允许存储 null 键,null 值.替代了 Hashtable. LinkedHashMap ...

  2. Java学习之LinkedHashMap学习总结

    前言: 在学习LRU算法的时候,看到LruCache源码实现是基于LinkedHashMap,今天学习一下LinkedHashMap的好处以及如何实现lru缓存机制的. 需求背景: LRU这个算法就是 ...

  3. 计算机程序的思维逻辑 (49) - 剖析LinkedHashMap

    之前我们介绍了Map接口的两个实现类HashMap和TreeMap,本节来介绍另一个实现类LinkedHashMap.它是HashMap的子类,但可以保持元素按插入或访问有序,这与TreeMap按键排 ...

  4. Java集合之LinkedHashMap

    一.初识LinkedHashMap 上篇文章讲了HashMap.HashMap是一种非常常见.非常有用的集合,但在多线程情况下使用不当会有线程安全问题. 大多数情况下,只要不涉及线程安全问题,Map基 ...

  5. LinkedHashMap源码阅读笔记(基于jdk1.8)

    LinkedHashMap是HashMap的子类,很多地方都是直接引用HashMap中的方法,所以需要注意的地方并不多.关键的点就是几个重写的方法: 1.Entry是继承与Node类,也就是Linke ...

  6. 循序渐进做项目系列(5):制作安装包,谁人都可以!——VS制作安装包简明教程

    一开始让我做安装包的时候,其实我是拒绝的.因为我根本就不会做安装包.查了资料之后,我很懵,很晕,很乱,因为不清晰,不简明,不直白.然而经过一番彷徨的挣扎,我终于发现:制作安装包,谁人都可以!故挥狼毫, ...

  7. 图解集合6:LinkedHashMap

    初识LinkedHashMap 上两篇文章讲了HashMap和HashMap在多线程下引发的问题,说明了,HashMap是一种非常常见.非常有用的集合,并且在多线程情况下使用不当会有线程安全问题. 大 ...

  8. 2013 duilib入门简明教程 -- 第一个程序 Hello World(3)

    小伙伴们有点迫不及待了么,来看一看Hello World吧: 新建一个空的win32项目,新建一个main.cpp文件,将以下代码复制进去: #include <windows.h> #i ...

  9. 2013 duilib入门简明教程 -- 界面布局(9)

        上一个教程实现的标题栏代码中,并没有看到处理自适应窗口大小的代码,但是窗口大小变化后,按钮的位置会跟着变化,这是因为我们将按钮放到了HorizontalLayout.VerticalLayou ...

随机推荐

  1. React 组件间通讯

    React 组件间通讯 说 React 组件间通讯之前,我们先来讨论一下 React 组件究竟有多少种层级间的关系.假设我们开发的项目是一个纯 React 的项目,那我们项目应该有如下类似的关系: 父 ...

  2. 【Python】 用户图形界面GUI wxpython II 布局和事件

    wxpython - 布局和事件 这章主要记录布局器Sizer以及事件的用法. // 目前还需要记录的:Sizer的Add方法加空白,Sizer的Layout,Sizer的Remove如何有效 ■ 布 ...

  3. WCF配置问题(配置WCF跨域)

    其它的先放一边.今天先来分享一下前段时间给公司做网站WCF服务接口的心得. 配置文件的配置问题 这里既然讨论WCF配置文件的问题,那么怎么创建的就不一一讲解了.好多博主都有提过的.所以直接分享自己开发 ...

  4. Java读取文件存储到mysql

    写了一批Lua脚本,要放到数据库里面,调用的时候进行计算,由于有太多lua脚本,就写了个程序来录入. 下面主要分三个部分: public static String readToString(Stri ...

  5. servlet3.0注解loadOnStartup不起作用解决方案

    多次尝试3.0在源码中直接用注解配置loadOnStartup=1,即web应用启动时创建servlet实例,发现不起作用,但是在web.xml配置则可以正常运行.先上源码. package lee; ...

  6. 第二次作业评分可能要 delay 一些

    各位同学,因为我现在在出差,昨天刚刚到旧金山,加上倒时差,所以这次作业我处理得会更慢一些,希望谅解. 另外,博客园的邮件通知邮件好多都进垃圾箱了,所以如果你有什么问题我没回且你关心的,请给我写邮件:j ...

  7. Alpha冲刺No.7

    一.站立式会议 彻底完成初步的界面设计 实现界面的简单跳转 完成部分事件监听 移植摄像头.图库功能到真实手机环境测试 数据库上传获取日记 二.项目实际进展 完成了简单的界面设计 大致完成了跳转任务 数 ...

  8. 201621123060《JAVA程序设计》第一周学习总结

    1.本周学习总结 1.讲述了JAVA的发展史,关于JDK.JRE.JVM的联系和区别 2.JDK是用JAVA开发工具.做项目的关键.JRE是JAVA的运行环境(JAVA也是JAVA语言开发的).JVM ...

  9. STL常用整理

    S T L Sting: << 判断拼音序 size length 字符串长度 str[n] 代表字符串中的一个字符 可用作左值 string::size_type 用于表示字符串长度计量 ...

  10. css3 文字的设置

    1.text-shadow 有3个length参数,第1个表示水平偏移,第2个表示垂直偏移,第3个表示模糊(可选) .text11{text-shadow: 3px 3px 5px #f00 ;col ...