java 集合學習之hashMap

2021-07-23 18:45:15 字數 2610 閱讀 4697

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集合的資料結構是針對元素有...