- 博客(16)
- 资源 (5)
- 收藏
- 关注
原创 从源码理解TreeMap.java
从源码理解TreeMap.javapackage java.util;import java.io.Serializable;import java.util.function.BiConsumer;import java.util.function.BiFunction;import java.util.function.Consumer;/** * 基于红黑树的Naviga
2016-04-29 21:03:56 2422 2
原创 JDK源码学习之TreeMap.java分析
TreeMap源码分析——基础分析 常见的数据结构有数组、链表、树。集合类中有基于数组的ArrayList,基于链表的LinkedList,还有链表和数组结合的HashMap。 Treemap基于红黑树实现。查看“键”或“键值对”时,他们会被排序(次序 由Comparable或Comparator决定)。 TreeMap的特点在于,所得到的结果是经过排序的。TreeMap是唯
2016-04-28 22:36:32 911
原创 从源码理解HashMap
package java.util;import java.io.IOException;import java.io.InvalidObjectException;import java.io.Serializable;import java.lang.reflect.ParameterizedType;import java.lang.reflect.Type;import ja
2016-04-25 17:47:53 2974 3
原创 HashMap中红黑树操作实现
// 红黑树操作方法实现, 从CLR引入 static TreeNode rotateLeft(TreeNode root, TreeNode p) { //左旋 TreeNode r, pp, rl; if (p != nu
2016-04-25 17:42:25 2659
原创 HashMap中红黑树的查找函数find()实现
//HashMap中红黑树的查找函数find()实现/** * 调用树的find()函数 */ final TreeNode getTreeNode(int h, Object k) { return ((parent != null) ? root() : this).find(h, k, null);
2016-04-25 17:22:49 5061 3
原创 JDK1.8 HashMap中resize()方法解释
JDK1.8 HashMap中resize()方法解析 * 初始化或者是将table大小加倍。如果为空,则按threshold分配空间,否则,加倍后,每个容器中的元素在新table中要么呆在原索引处,要么有一个2的次幂的位移 * @return the table */ final Node[] resize() { Node[] oldTab
2016-04-25 15:30:02 3200 3
原创 HashMap中的put(Object key, Object value)方法实现
HashMap中的put(Object key, Object value)方法实现/** * 实现Map.put及其相关方法 * @param hash hash for key * @param key the key * @param value the value to put * @param onlyIfAbsent 若为 true
2016-04-22 21:57:02 3780
原创 HashMap中get(Object key)方法实现
jdk1.8 HashMap.java中获取指定关键字对应的值value方法get(Object key) /* 返回指定关键字的值value,没有则返回null */ public V get(Object key) { Node e; return (e = getNode(hash(key), key)) == null ? n
2016-04-22 21:15:41 5688 1
原创 Java中如何创建不可变对象
class:Java中class确切的表示为一个类object:Java中Object确切的表示为一个对象,也称为类的实例如果一个类被设计成不可变的类 ,那么这个类的实例化对象也是不可变的。不可变类:当你获得这个类的一个实例引用时,你不可以改变这个实例的内容。不可变对象: 一旦一个类的实例化对象被创建并初始化,那么它就不可以被改变。可以调用访问器方法(getter
2016-04-22 17:18:52 7077 1
原创 对于给定数字返回最小2次幂
JDK中HashMap.java中有一个函数 static final int tableSizeFor(int cap){ int n = cap -1; n |= n >>> 1; n |= n >>> 2; n |= n >>> 4; n |= n >>> 8; n |= n >>> 16; retur
2016-04-22 15:35:10 3371
原创 JDK1.8源码学习之HashSet.java
jdk1.8源码学习之HashSet.javapackage java.util;import java.io.InvalidObjectException;public class HashSet extends AbstractSet implements Set, Cloneable, java.io.Serializable{ static final
2016-04-22 12:52:44 1058
原创 JDK1.8源码学习之ConcurrentHashMap.java
jdk1.8源码学习之并发HashMap————ConcurrentHashMap.javapackage java.util.concurrent;import java.io.ObjectStreamField;import java.io.Serializable;import java.lang.reflect.ParameterizedType;import java.la
2016-04-22 12:50:04 2123 1
原创 Java 哈希机制
通过分析HashMap和HashSet源码分析其Hash存储机制 对于HashSet而言,系统采用hash算法决定集合元素的存储位置,这样可以保证能快速存、取集合元素; 对于HashMap而言,系统key-value当成一个整体进行处理,系统总是根据Hash算法来计算key-value的存储位置,这样可以保证能快速存、取Map的key-value对。 虽然集合号称存储的是Ja
2016-04-21 15:52:08 1791
原创 JDK1.8源码学习之Map.java
package java.util;import java.util.function.BiConsumer;import java.util.function.BiFunction;import java.util.function.Function;import java.io.Serializable;/** * 一个可以将关键字映射为值的对象; * 一个map可以包含重复
2016-04-21 14:12:12 3217 1
原创 Java中mutable对象和immutable对象的区别
今天读jdk源码中Map.java时看到一句话:“great care must be exercised if mutable objects are used as map keys”;第一次知道mutable对象这个概念,google了一下,维基百科定义如下:“In object-oriented and functional programming, an immutable
2016-04-20 17:03:50 20227
原创 JDK1.8源码学习之 HashMap.java
///JDK1.8源码学习之HashMap.javapackage java.util;import java.io.IOException;import java.io.InvalidObjectException;import java.io.Serializable;import java.lang.reflect.ParameterizedType;import java.
2016-04-20 15:31:43 1472
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人