hashmap结构与原理解析
Hashmap本质其实一种数据类型。是用哈希表与红黑树实现的map类。在Java编程语言中,最基本的数据结构就是数组和模拟指针(引用)。其他所有的数据结构都可基于其产生。Hasmap从结构上来讲,其实就是将数组与链表结合起来所诞生的一种数据结构类型。
在谈Hashmap之前首先要了解什么是map,map是用于存储键值对(key,value)的集合类,从术语讲就是一组键值对的映射。
在Java中方便理解,可以将map看作是接口。
如上图所示,左边代表键的集合,右边代表值的集合,每一条关系记录就是一个entry即键值对
map中没有重复的key,每个key只能对应一个value。
上图是Hashmap的存储结构,在获取元素前需要把key经过hash运算得到目标元素在表中的位置,在经过比较得到元素,使得查找效率极高。
遍历方法
1.可以采用keySet()+for循环的方法来遍历,keySet()返回的是一个Key值的集合
Map<String,String> map=new HashMap<String,String>();
map.put("key1","value1");
map.put("key2","value2");
map.put("key3","value3");
for(String key:map.keySet()){
system.out.println("key:"+key);
system.out.println("value:"+map.get(key));
}
2.采用EntrySet()+Iterator进行遍历,EntrySet()返回的是一个Map.Entry的一个集合,它提供getKey(),getValue()方法来获取键值对。
Iterator< Map.Entry<String,String>> it=map.EntrySet().iterator();
while(it.hasNext()){
Map.Entry<String,String> entry=it.next();
system.out.println("key:"+entry.getKey());
system.out.println("value:"+entry.getValue());
}
3.直接采用EntrySet+for增强进行遍历
for(Map.Entry<String,String> entry:map.entrySet()){
system.out.println("key:"+entry.getKey());
system.out.println("value:"+entry.getValue());
}
4.取出所有value的值,但是不能取出KEY值
for(String value:map.values()){ <pre name="code" class="html"> system.out.println("value:"+value);
}
HashMap 的 4 个构造方法
//创建一个空的哈希表,初始容量为 16,加载因子为 0.75
public HashMap()
//创建一个空的哈希表,指定容量,使用默认的加载因子
public HashMap(int initialCapacity)
//创建一个空的哈希表,指定容量和加载因子
public HashMap(int initialCapacity, float loadFactor)
//创建一个内容为参数 m 的内容的哈希表public HashMap(Map<? extends K, ? extends V> m)
———————————————
- 解析HashMap的实现原理
- [网站建设] 深度解析搜索引擎的原理结构
- thrift之TTransport类体系原理及源码详细解析1-类结构和抽象基类
- HashMap的实现原理及底层结构
- (转)HashMap深入原理解析
- HashMap原理解析
- java jdk1.7版本的HashMap原理解析
- HashMap结构,原理
- java HashMap 原理 数据结构
- HashMap的源码,实现原理,底层结构
- HashMap的实现原理和底层数据结构
- HashMap的存储结构及原理
- HashMap的存储结构及原理
- 深度解析搜索引擎的原理结构
- Java HashMap原理和结构
- HashMap的源码,实现原理,底层结构
- 图文解析TCP/IP 协议的结构与运行原理
- 【HashMap】深入原理解析
- 红黑树结构算法原理与代码解析
- 可能是最详细的HashMap(Java8)实现详解-原理+源码解析