LinkedHashMap笔记】的更多相关文章

一.最基本元素存储单元 /** * HashMap.Node subclass for normal LinkedHashMap entries. */ static class Entry<K,V> extends HashMap.Node<K,V> { Entry<K,V> before, after; Entry(int hash, K key, V value, Node<K,V> next) { super(hash, key, value, ne…
Map是Java collection framework 中重要的组成部分,特别是HashMap是在我们在日常的开发的过程中使用的最多的一个集合.但是遗憾的是,存放在HashMap中元素都是无序的,原因是我们在put或get数据的时候都是根据key的hash值来确定元素的位置.在具体的业务场景中,我们更多的希望对于HashMap集合能够进行顺序访问,好在 jdk 中已经给我们提供了一种解决方案,那就是LinkedHashMap.该类继承与HashMap,因此HashMap拥有的特性它都有,同时…
1.简述 LinkedHashMap是HashMap的子类,他们最大的不同是,HashMap内部维护的是一个单向的链表数组,而LinkedHashMap内部维护的是一个双向的链表数组.HashMap是无序的,LinkedHashMap可以根据访问顺序或者插入顺序进行排序(默认是根据插入顺序的,当设置accessOrder为true时会按照访问顺序排序),当按照访问顺序排序的时候,每次get或put操作时,都会将该节点放到链表的末尾 2.实现 1.数据结构: LinkedHashMap是HashM…
HashMap有一个问题,就是迭代HashMap的顺序并不是HashMap放置的顺序,也就是无序. LinkedHashMap保证了元素迭代的顺序.该迭代顺序可以是插入顺序或者是访问顺序.通过维护一个双向链表实现. 需要在理解HashMap实现原理的基础上学习LinkedHashMap,JDK源码学习笔记——HashMap 一.数据结构 实际上就是在HashMap的基础上加了LinkedList (图片来自Java集合之LinkedHashMap) LinkedHashMap.Entry继承了H…
Java TreeMap 和 LinkedHashMap[笔记] TreeMap TreeMap基本结构 TreeMap 底层的数据结构就是红黑树,和 HashMap 的红黑树结构一样 与HashMap不同的是,TreeMap 利用了红黑树左节点小,右节点大的性质,根据 key 进行排序,使每个元素能够插入到红黑树大小适当的位置,维护了 key 的大小关系,适用于 key 需要排序的场景 TreeMap 常见属性 //比较器,如果外部有传进来 Comparator 比较器,首先用外部的 //如果…
LinkedHashMap是HashMap的子类,很多地方都是直接引用HashMap中的方法,所以需要注意的地方并不多.关键的点就是几个重写的方法: 1.Entry是继承与Node类,也就是LinkedHashMap与HashMap的根本区别所在,Node是链表形式,只有next与下一个元素进行连接,而Entry的链表有before和after两个连接点. static class Entry<K,V> extends HashMap.Node<K,V> { Entry<K,…
特点: 存入元素的顺序   与   取出元素的顺序相同(与LinkedHashSet类似) import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Map; public class LinkedHashMapDemo { public static void main(String[] args) { HashMap<Integer,String>…
1. LinkedHashMap类的概述 LinkedHashMap:Map接口的哈希表(保证唯一性) 和 链接(保证有序性)列表实现,具有可预知的迭代顺序. 2. 代码示例: package cn.itcast_03; import java.util.LinkedHashMap; import java.util.Set; /* * LinkedHashMap:是Map接口的哈希表和链接列表实现,具有可预知的迭代顺序. * 由哈希表保证键的唯一性 * 由链表保证键盘的有序(存储和取出的顺序一…
TreeMap & TreeSet & LinkedHashMap 一.TreeMap HashMap缺陷:键值对之间没有特定的顺序.在TreeMap中, 键值对之间按键有序,TreeMap的实现基础是排序二叉树. 一)基本用法 构造方法: //无参构造方法要求Map中的键实现Compareble接口 public TreeMap() //如果comparator不为null,在TreeMap内部进行比较时会调用compare方法 public TreeMap(Comparator<…
TJI读书笔记15-持有对象 总览 类型安全和泛型 Collection接口 添加元素 List 迭代器 LinkedList 栈 Set Map Queue Collection和Iterator Foreach与迭代器 总结 总览 It’s a fairly simple program that only has a fixed quantity of objects with known lifetimes. 埃大爷开篇说了那么一句话. 通常情况下,程序总在运行时才知道根据某些条件创建新…
Java性能调优笔记 调优步骤:衡量系统现状.设定调优目标.寻找性能瓶颈.性能调优.衡量是否到达目标(如果未到达目标,需重新寻找性能瓶颈).性能调优结束. 寻找性能瓶颈 性能瓶颈的表象:资源消耗过多.外部处理系统的性能不足.资源消耗不多但程序的响应速度却仍达不到要求. 资源消耗:CPU.文件IO.网络IO.内存. 外部处理系统的性能不足:所调用的其他系统提供的功能或数据库操作的响应速度不够. 资源消耗不多但程序的响应速度却仍达不到要求:程序代码运行效率不够高.未充分使用资源.程序结构不合理. C…
一.概要描述 在上上一篇博文和上一篇博文中分别描述了jobTracker和其服务(功能)模块初始化完成后,接收JobClient提交的作业,并进行初始化.本文着重描述,JobTracker如何选择作业的Task分发到TaskTracker.本文只是描述一个TaskTracker如何从JobTracker获取Task任务.Task任务在TaskTracker如何执行将在后面博文中描述. 二. 流程描述   1. TaskTracker在run中调用offerService()方法一直死循环的去连接…
本系列笔记由常彦博整理,请知悉 目  录 一. Java技术基础......................................................................................................... 1 1.1编程语言.......................................................................................................…
前言: 今天在整理一些资料时,想起了map,set,list等集合,于是就做些笔记,提供给大家学习参考以及自己日后回顾. Map主要用于存储健值对,根据键得到值,因此不允许键重复(重复了覆盖了),但允许值重复.Hashmap 是一个最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度,遍历时,取得数据的顺序是完全随机的.HashMap最多只允许一条记录的键为Null;允许多条记录的值为 Null;HashMap不支持线程的同步,即任一时刻可以有多个…
一.前言: 本来想看完书再整理下自己的笔记的,可是书才看了一半发现笔记有点多,有点乱,就先整理一份吧,顺便复习下前面的知识,之后的再补上. 真的感觉,看书是个好习惯啊,难怪人家说"书籍是人类进步的阶梯".之前学知识,喜欢网上找份教程,看点视频,照着做呗,秉着"我做过的东西反正别人肯定玩过"的观念,一通乱学,学的又多又杂,现在细细想来,很多东西我只是学到了它的形,却没有学到它的神,只是在抄别人的代码.为什么这么做?这么写是出于什么考虑?我都一脸懵懂!而现在我喜欢看书,…
接上篇<android开发艺术探索>读书笔记(十一)--Android的线程和线程池 No1: 目前比较常用的缓存策略是LruCache和DiskLruCache,LruCache常被用作内存缓存,DiskLruCache常被用作存储设备缓存. Lru是Least Recently Used的缩写,即最近最少使用算法,当缓存快满时,会淘汰近期最少使用的缓存目标. No2: LruCache: LruCache是一个泛型类,它内部采用一个LinkedHashMap以强引用的方式存储外界的缓存对象…
JSTLApache提供的标签库 jar包:jstl-1.2.jar,如果传MyEclipse,他会在我们导入jar包,无需自己导入,如果没有使用MyEclipse那么需要自行导入.-----------------------------------------------------------------------------------------------------导入JSTL核心标签库<%taglib prefix="c" uri="http://ja…
前言:Scala的安装教程:http://www.cnblogs.com/biehongli/p/8065679.html 1:Scala之基础语法学习笔记: :声明val变量:可以使用val来声明变量,用来存放表达式的计算结果,但是常量声明后是无法改变它的值的,建议使用val来声明常量: 声明var变量:如果要声明可以改变的引用,可以使用var变量,声明的常量的值可以改变. :指定类型:无论声明val变量还是声明var变量.都可以手动指定其类型,如果不指定,scala会自动根据值,进行类型的推…
<Thinking In Java>阅读笔记 前四章:对象导论. 一切都是对象. 操作符. 控制执行流程 public在一个文件中只能有一个,可以是一个类class或者一个接口interface >一旦创建一个引用,就希望它能与一个新的对象相关联: String s = "hello"; String s = new String("hello"); s:遥控器(引用) “hello”:电视机(对象) 数据存储在: 寄存器:最快的存储区,在处理器内…
JAVA自学笔记18 1.Map接口: 1)功能: 2) Map<String,String>m=new HashMap<String,String>(); //添加元素,元素无序 System.out.println("map.put("cc","coco"));//null //替换键值,返回该键的上一个值,若键不存在,返回null System.out.println(map);//cc=coco,左边是键,右边是值 //ma…
JAVA自学笔记19 1.集合总结 Collection(单列集合) List(有序可重复) ArrayList:底层数据结构是数组 ,查询快,增删慢.线程不安全,效率高 Vector:底层数据结构是数组,查询快,增删慢.线程不安全,效率低 LinkedList:底层数据结构是链表,查询慢,增删快,线程不安全,效率高 Set(无序唯一) HashSet:底层数据结构是哈希表,哈希表依赖两个方法:hashCode()和equals() 执行顺序:首先判断hashCode()值是否相同,是则继续执行…
一.前言 本来想看完书再整理下自己的笔记的,可是书才看了一半发现笔记有点多,有点乱,就先整理一份吧,顺便复习下前面的知识,之后的再补上. 真的感觉,看书是个好习惯啊,难怪人家说“书籍是人类进步的阶梯”.之前学知识,喜欢网上找份教程,看点视频,照着做呗,秉着”我做过的东西反正别人肯定玩过“的观念,一通乱学,学的又多又杂,现在细细想来,很多东西我只是学到了它的形,却没有学到它的神,只是在抄别人的代码.为什么这么做?这么写是出于什么考虑?我都一脸懵懂!而现在我喜欢看书,花时间来沉淀自己的知识,与大家共…
目录 Mybatis--Source阅读笔记 兵马未动,日志先行 异常 缓存 回收机制适配器 回收机制优化缓存 事务缓存 调试型缓存--日志缓存 解析 类型处理器 IO VFS Resource ResolverUtil 数据源 unpooledDataSource PooledDataSource JndiDataSource 事务 反射 对象工厂 调用者 wrapper session DefaultSqlSessionFactory DefaultSqlSession Configurat…
前言 今天在看GuavaCache缓存相关的源码,这里想到先自己手动实现一个LRU算法.于是乎便想到LinkedHashMap和LinkedList+HashMap, 这里仅仅是作为简单的复习一下. LRU LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是"如果数据最近被访问过,那么将来被访问的几率也更高". 代码实现原理 LinkedList + HashMap: LinkedList其实是一个双向链表,我们可以通过…
原理这篇讲得比较透彻Java集合之LinkedHashMap. 本文属于源码阅读笔记,因put,get调用逻辑及链表维护逻辑复杂(至少网上其它文章的逻辑描述及配图,我都没看明白LinkedHashMap到底长啥样),所以以文字描述和手画逻辑图的方式来讲述源码逻辑,阅读时再辅以源码达到事半功倍的效果. 1.LinkedHashMap简要介绍. LinkedHashMap继承hashMap,并维护一个双向链表保持有序(与haspmasp最重要的区别),accessOrder==true初始化时按访问…
1.简述 HashMap是java语言中非常典型的数据结构,也是我们平常用的最多的的集合类之一.它的底层是通过一个单向链表(Node<k,v>)数组(也称之为桶bucket,数组的长度也叫做桶深)来实现的.它内部有以下成员变量  static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16 内部数组的默认初始长度 static final int MAXIMUM_CAPACITY = 1 << 30;   内…
Java编程思想 这是一个通过对<Java编程思想>(Think in java)进行阅读同时对java内容查漏补缺的系列.一些基础的知识不会被罗列出来,这里只会列出一些程序员经常会忽略或者混淆的知识点. 所列知识点全部都是针对自己个人而言,同时也欢迎大家进行补充. 第九章(接口) 任何抽象性都应该是应真正的需求而产生的. 访问权限 p172 interface如果不加public关键字,则只具有包访问权限. 重名 p181 可以通过extends来扩展接口,但在实现多重继承时要注意不能实现签…
七.队列 排队,先进先出. 除并发应用外Queue只有两个实现:LinkedList,PriorityQueue.他们的差异在于排序而非性能. 一些常用方法: 继承自Collection的方法: add 在尾部增加一个元索 如果队列已满,则抛出一个IIIegaISlabEepeplian异常 remove 移除并返回队列头部的元素 如果队列为空,则抛出一个NoSuchElementException异常 element 返回队列头部的元素 如果队列为空,则抛出一个NoSuchElementExc…
Map笔记: import java.util.*; /**一:Collection接口的 * Map接口: HashMap(主要实现类) : HashedMap / LinkedHashMap /TreeMap * Map接口: <键,值>对, 重复的键会进行值得覆盖 ,输出顺序和放入顺序是不一定可以保持顺序的! * 修改查询操作: 1.put(key, value), 2.remove(key) 3.putAll(其他map), 复制其他映射中的所有键值对; * 4.get(key),返回…