HashMap.put
2020-07-28 16:34:18 0 举报
HashMap jdk1.8 put
作者其他创作
大纲/内容
Y
tl = p;
e = e.next
e = p.putTreeVal
e !=null ?
n = tab.length
p.key == k ?
MIN_TREEIFY_CAPACITY = 64
afterNodeInsertion(evict)
static final int MAXIMUM_CAPACITY = 1 << 30threshold = size* loadFactorloadFactor = 0.75(defalt)DEFAULT_INITIAL_CAPACITY = 1 << 4
n<MIN_TREEIFY_CAPACITY?
hd.treeify(tab);
e.value = value
return
p instanceof TreeNode?
tab[index] = hd
e = p]
N
threshold = Integer.MAX_VALUE;
oldThr > 0
oldCap >= MAXIMUM_CAPACITY ?
p is null?
!onlyIfAbsent || oldValue == null
e.key== k?
int j = 0; j < oldCap; ++j
oldTab != null
e = p.next
resize()
++modCount
e ==null?
tab[index] != null?
newCap = oldThr
++size > threshold
p.prev = tl; tl.next = p;
hd = p
treeifyBin()
newThr = oldThr << 1
afterNodeAccess(e)
float ft = (float)newCap * loadFactor; newThr = (newCap < MAXIMUM_CAPACITY && ft < (float)MAXIMUM_CAPACITY ? (int)ft : Integer.MAX_VALUE);
e = tab[index = (n - 1) & hash
tab = resize()
p = tab[n-1]
return null
oldCap>0
table is empty?
return oldTab
return newTab
newCap = DEFAULT_INITIAL_CAPACITY;newThr = (int)(DEFAULT_LOAD_FACTOR * DEFAULT_INITIAL_CAPACITY);
p = e
binCount >= TREEIFY_THRESHOLD - 1 ?
t1 == null ?
newThr == 0?
oldValue = e.value
return oldValue
TREEIFY_THRES = 8threshold = size*0.75
e != null?
收藏
0 条评论
下一页