HashMap集合的整理

2021-10-16 17:28:04 字數 1512 閱讀 7599

1.初始容量:16

static final int default_initial_capacity = 1 << 4; // aka 16
2.最大容量2^30

static final int maximum_capacity = 1 << 30;
3.載入因子:0.75

static final float default_load_factor = 0.75f;
4.樹化閾值   ---   當桶(bucket)上的鍊錶數》8時會轉成紅黑樹

static final int treeify_threshold = 8;
5.鏈化閾值   ---   當桶(bucket)上的鍊錶數<6時樹轉鍊錶。

static final int untreeify_threshold = 6;
6.樹的最小容量:64

static final int min_treeify_capacity = 64;
7.繼承關係

public class hashmapextends abstractmapimplements map, cloneable, serializable
8.擴容原理:n*2

9.通過hash值找到鍵值對應hash表中的存放位置      (n:桶長度     n總是2的x次方時,hash & (n-1)等價於hash % n,但&比%效率更高)

int index = (n - 1) & hash;
10.放置鍵值時的擴容條件

final v putval(int hash, k key, v value, boolean onlyifabsent, boolean evict)
11.避免碰撞的方式

static final int hash(object key)

1.map.getordefault(a,default)

//假設map中含有乙個鍵值對

output=map.getordefault("name","xiaoming");

此時output="huang",

//假設map為空

output=map.getordefault("name","xiaoming");

此時為預設值output="xiaoming"

其他知識點補充:

1.比較兩個map集合內容是否相同

//假設已有資料map1和map2

boolean b = map1.equals(map2);

結果:但凡map1和map2裡的內容一致(排序不一樣沒有關係),返回true;

否則,返回false

HashMap集合遍歷

map的遍歷 1,迭代器 一鍵導包 ctrl shift o 先遍歷出key 再通過key找到value set keyset map.keyset 因為map中的key是唯一的 所以可以獲取到key的set集合 iterator it keyset.iterator 獲取迭代器 while it....

hashmap知識整理

hashmap底層資料結構是hash表 是由陣列加鍊表加紅黑樹實現的hash表,jdk1.8之前沒有紅黑樹。hashmap在put資料時需要先使用hash演算法結合陣列長度進行定址,找到陣列上的乙個槽位,如果槽位是空的就加入這個槽位中,如果槽位不是空的則加入該槽位上的鍊錶尾部 jdk 1.7 之前使...

集合類的學習 HashMap

1.hashmap對key進行雜湊 通過鍵計算出相應的儲存位置,把值放到這個位置上 2.keyset 返回key的檢視 values 返回value的檢視,型別是collection entryset 返回map的set集合檢視,在返回的集合中,每個元素都是乙個 map.entry。說明 1.map...