一、LruCache概要 LRU (Least Recently Used) 即最近最少使用算法。在Android开发中,LruCache是基于LRU算法实现的。当缓存空间使用完的情况下,最久没被使用的对象会被清除出缓存…
分类:HashMap源码分析
【Java】HashMap 和 HashTable 的区别到底是什么?
第一、继承不同 第一个不同主要是历史原因。Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map接口的一个实现。 public class HashMap<K, V&g…
HashMap HashTable HashSet区别剖析总结
HashMap、HashSet、HashTable之间的区别是Java程序员的一个常见面试题目,在此仅以此博客记录,并深入源代码进行分析: 在分析之前,先将其区别列于下面: 1、HashSet…
HashMap源码分析(重要)
1.成员变量、树化阈值 DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16(桶的个数) DEFAULT_LOAD_FACTOR = 0.75f(负载因子) TREEIFY…
Java LinkedHashMap类源码解析
LinkedHashMap继承了HashMap,他在HashMap的基础上增加了一个双向链表的结构,链表默认维持key插入的顺序,重复的key值插入不会改变顺序,适用于使用者需要返回一个顺序相同的map对象的情况。还可以…
【Java8源码分析】集合框架-HashMap
一、HashMap的存储结构 总共有两种存储类 // 1. 哈希冲突时采用链表法的类,一个哈希桶多于8个元素改为TreeNode static class Node<K,V> implements Map.E…
HashSet源码分析(基于JDK8)
HashSet概述 对于HashSet而言,它是基于HashMap实现的,HashSet底层使用HashMap来保存所有元素,因此HashSet 的实现比较简单,相关HashSet的操作,基本上都是直接调用底层HashM…
jdk1.8 hashmap源码
static class Node<K,V> implements Map.Entry<K,V> { &nbs…
HashMap源码解析——基于jdk11
HashMap源码解析——基于jdk11 插入流程 获取流程 插入流程 首先我们从put方法说起: public V put(K key, V value) { return putVal(hash(key), key,…
MapReduce源码分析之Task中关于对应TaskAttempt存储Map方案的一些思考
我们知道,MapReduce有三层调度模型,即Job——>Task——>TaskAttempt,并且: &nb…
JDK8:HashMap源码解析:put方法
一、概述 Map的put方法接受两个参数,key和value,该方法用于存储键值对。 HashMap的put方法只有一行代码: return putVal(hash(key), key, value, fa…
二叉查找树节添加删除节点的细节
1. 定义节点 2. 添加节点 3. 测试添加方法 4. 删除节点 5. 测试删除 二叉查找树,也叫二叉搜索树,优势就在于查找,跟二分查找一样,时间复杂度为 O(logn),如何做到的呢?就在于构造二叉树的时候,有这样一…