
synchronizedMap
为每个防范添加了synchronized
哈希表为解决冲突,可以采用开放地址法和链地址法等来解决问题
大小为2的幂次是为了取模和扩容(不需要重新计算hash)的效率
get:
计算数组位置地址,使用高位运算(hash值右移16)和取模(和n-1&)
put:计算地址;是否存在key;是否treenode;是否超过8;是否超过threadhold
扩容:新数组(2倍),
循环中删除元素,需要使用迭代器,只能对每一个next()当前元素做一次修改,否则异常,普通的循环会导致指向下一个元素的指针失效,报异常
arraylist的循环删除:
foreach循环删除:删除后只能退出循环,否则异常
普通的循环会漏掉元素
iterator可以实现正常循环删除(Java8的Collection.remove(filter)是该方法的default实现,可以直接使用)




近期评论