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...