本文主要是从以下几个方面对HashMap进行分析:
一:什么是HashMap以及HashMap的基本特性有哪些?
二:HashMap的基本工作原理是什么?
三:关于put(),get()方法在源码层面是怎么实现的?(对put的源码做重点分析)
四:HashMap中的hash算法是如何实现的?
五:HashMap使如何进行resize的?
六:关于HashMap还可以深入了解的一些问题是什么?
一:HashMap简析以及HashMap的基本特性
基于哈希表的Map 接口的实现。此实现提供所有可选的映射操作,并允许使用null 值和null 键。(除了非同步和允许使用 null 之外,HashMap 类与Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。
这里需要注意的几点就是,基于Map接口,映射操作,允许null键值,非同步,不保证映射的顺序,不保证顺序的恒久不变。
经常我们一提到HashMap就会想到的词就是键值对,那个什么是键值对?看下面的一段代码:
HashMap<String,String> map1=new HashMap<String,String>();
map1.put("语文","王老师");
map1.put("数学","李老师");
map1.put("英语","张老师");
map1.put("化学","刘老师");
map1.put("生物","孙老师");
map1.put("物理","周老师");
map1.put("政治","吴老师");
map1.put("地理","赵老师");
for(Entry<String,String> entry:map1.entrySet()){
System.out.println(entry.getKey()+"----"+entry.getValue());
}
这里用到了put方法,将"语文"和"王老师"构成了一组键值对,"语文"是键,"王老师"是值,就好像是这种关系---"语文"->"王老师",这样将他