Java HashMap的原理及遍历
HashMap也是我们使用非常多的Collection,它是基于哈希表的 Map 接口的实现,以key-value的形式存在。在HashMap中,key-value总是会当做一个整体来处理,系统会根据hash算法来来计算 key-value的存储位置,我们总是可以通过key快速地存、取value。
主要的基础数据结构就两种,一种是数组,插入慢,索引快,一种是链表,插入快,索引慢。HashMap底层维护一个数组table, 数组中的每一项是一个key,value形式的Entry,Entry就是链表结构,所以HashMap是中和两种,取到插入数据和索引数据性能的平衡。
存储结构如下:
三种遍历方式如下:
第一种
for (String key : map.keySet()) { System.out.println("key: " + key + ", value: " + map.get(key)); }
第二种
for (Map.Entry<String, String> entry : map.entrySet()) { System.out.println("key: " + entry.getKey() + ", value: " + entry.getValue()); }
第三种
for (String value : map.values()) { System.out.println("value: " + value); }