We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
HashMap是广大程序员使用的最多、面试被问最多的一个容器了:
我个人也经常面试别人的时候会用hashmap切入去问容器、线程安全、锁等方面内容,但是其实hashmap真正的源码并没有特别认真的通读过;这个文章就是从HashMap源码入手,详细解析一下HashMap(android-30)的实现;
我们首先看一下HashMap的声明:
public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable
我们先从interface开始解析:
public interface Serializable { }
这里有篇文章说的很好 → https://blog.csdn.net/weixin_44209555/article/details/107837108 我在这里主要提炼一下主要观点:
public interface Cloneable { }
这里也引用一篇文章 → https://www.jianshu.com/p/ea8f7b1fbbb1 提炼的重点:
internalClone
接口在这里就全说完了,那么我们这里可以对HashMap实现的接口做定义: HashMap是一个可以(反)序列化、可以克隆的Map
public abstract class AbstractMap<K,V> implements Map<K,V>
This class provides a skeletal implementation of the Map interface, to minimize the effort required to implement this interface.
// 常亮 private static final long serialVersionUID = 362498820763181265L; static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16 static final int MAXIMUM_CAPACITY = 1 << 30; static final float DEFAULT_LOAD_FACTOR = 0.75f; static final int TREEIFY_THRESHOLD = 8; static final int UNTREEIFY_THRESHOLD = 6; static final int MIN_TREEIFY_CAPACITY = 64; // 变量 transient Node<K,V>[] table; transient Set<Map.Entry<K,V>> entrySet; transient int size; transient int modCount; int threshold; final float loadFactor;
首先,我们看一下HashMap里的成员:
TREEIFY_THRESHOLD
transient
The text was updated successfully, but these errors were encountered:
No branches or pull requests
HashMap是广大程序员使用的最多、面试被问最多的一个容器了:
我个人也经常面试别人的时候会用hashmap切入去问容器、线程安全、锁等方面内容,但是其实hashmap真正的源码并没有特别认真的通读过;这个文章就是从HashMap源码入手,详细解析一下HashMap(android-30)的实现;
声明
我们首先看一下HashMap的声明:
我们先从interface开始解析:
这里有篇文章说的很好 → https://blog.csdn.net/weixin_44209555/article/details/107837108
我在这里主要提炼一下主要观点:
这里也引用一篇文章 → https://www.jianshu.com/p/ea8f7b1fbbb1
提炼的重点:
internalClone
是一个native的浅拷贝快速实现,需要实现深拷贝需要自己Override Clone接口在这里就全说完了,那么我们这里可以对HashMap实现的接口做定义:
HashMap是一个可以(反)序列化、可以克隆的Map
实现
首先,我们看一下HashMap里的成员:
TREEIFY_THRESHOLD
约定了当单个节点下链表长度大于8时会转成红黑树,而MIN_TREEIFY_CAPACITY是又添加了一条约束:只有当整个map里节点数量超过64个时才会允许树化,这里主要是萎了防止hashmap使用初期就进行树化而不是直接resizetransient
关键字,它表示这个变量不会被(反)序列化 → https://blog.csdn.net/qq_44543508/article/details/103232007The text was updated successfully, but these errors were encountered: