HashMap为什么快? 就是和它优雅的设计密切相关的。

HashMap<String , Double> map = new HashMap<String , Double>(2);    

  map.put("语文" , 80.0);    
   map.put("数学" , 89.0);    
  map.put("英语" , 78.2);

hashmap底层使用数据实现的   transient Entry[] table;

这里的table就是用来储数据的。

 static class Entry<K,V> implements Map.Entry<K,V> {
        final K key;
        V value;
        Entry<K,V> next;
        final int hash;}

Entry包括4个变量。

原理。1.根据key得到hashcode  方法:int hash = hash(key.hashCode());

2.根据hashcode得到对应的位置 方法:int i = indexFor(hash, table.length);

这一步很关进。可以将一个key转换成一个固定的位置。这就是为什么快的原因。

当需要get(o)的时候。只要根据上面1和2两步 就可以得到该key对应的value所在的位置(table数组中的位置)。可以快速取出value

 

总结 : hashmap快的原因:可以通过hash算法。将一个固定的key转换为它唯一对应的位置。