1、hashmap類繼承關係
public class hashmapextends abstractmap
implements map, cloneable, serializable
存放示意圖
由此可以看出hash值一樣的節點會被存放在同一條鍊錶上,比原始遍歷equals查詢效率高(hash值相等的分為一組作為乙個鍊錶,在對該鍊錶進行遍歷查詢)
重要屬性:
1、static final int default_initial_capacity = 1 << 4;預設容量,必須是2的指數
2、static final int maximum_capacity = 1 << 30;最大容量
3、static final float default_load_factor = 0.75f;載入因子
4、static final int treeify_threshold = 8;
5、static final int untreeify_threshold = 6;
6、static final int min_treeify_capacity = 64;
7、transient node table;
重要方法:
1、通過key獲取value
public v get(object key)
static final int hash(object key)
final nodegetnode(int hash, object key) while ((e = e.next) != null);
此處在鏈上查詢對應key的node}}
return null;
}2、向hashmap中存放乙個node
public v put(k key, v value)
final v putval(int hash, k key, v value, boolean onlyifabsent,
boolean evict)
if (e.hash == hash &&//如果鍊錶中存在放入的key,則在後面替換原有的value
((k = e.key) == key || (key != null && key.equals(k))))
break;
p = e;//重置起始引用
}afternodeaccess(e);
return oldvalue;}}
++modcount;
if (++size > threshold)
resize();
afternodeinsertion(evict);
return null;
}3、根據查詢map是否含有value物件的節點
public boolean containsvalue(object value) }}
return false;
}4、清空map
public void clear()
}
備註:1、必需熟悉泛型概念
2、a|b=>其結果 較大者<=result<=a+b;a&b=>其結果 0<=result<=較小者
學習資料:
Java之集合學習
collection list arraylist linkedlist vector stack set hashset treeset linkedhashset queue1 collection collection是所有集合的根介面,jdk 不提供此介面的任何直接實現 它提供更具體的子介面...
java學習之單列集合
陣列在儲存資料的時候是有固定長度,而且必須儲存同一種資料型別的資料,集合的出現就是為了補充這個不足的 集合分為單列集合 collection 和雙列集合 map 這兩個只是實現集合的兩個介面 介面的特點是不能用來建立物件,所以在實際的開發中他們只是用來作為父類出現 單列集合 collection 下...
Java學習之集合 四
18.01 集合框架 map集合概述和特點 b map介面和collection介面的不同 1 map是雙列的,collection是單列的 2 map的鍵唯一,collection的子體系set是唯一的 3 map集合的資料結構值針對鍵有效,跟值無關 collection集合的資料結構是針對元素有...