您的位置:首页 > 其它

hashmap结构与原理解析

2020-07-14 06:04 93 查看

       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)
———————————————

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: