Java基础复习
小小小叶纸
始终保持一颗向上的心
展开
-
复习ConcurrentHashMap增删改查
ConcurrentHashMap ⭐static final int spread(int h) { return (h ^ (h >>> 16)) & HASH_BITS; } 对key进行hash运算,中心思想无非就是高位移向低位减少hash冲突⭐public V put(K key, V value) 1.首先会判断key与value是否为Null,如果为Null则抛异常;(这也是ConcurrentHashMap与HashMa...原创 2020-12-22 21:52:40 · 706 阅读 · 0 评论 -
复习HashMap源码增删改查
HashMap⭐对key的hash运算 static final int hash(Object key) { int h; return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16); } 通过对key的异或运算 ^ ,将高位与低位进行互换,从而减低了hash冲突,进而降低了系统损耗。⭐public V put(K key, V value) {...原创 2020-12-18 16:23:01 · 310 阅读 · 1 评论 -
复习LinkedList源码增删改查
LinkedList⭐public boolean add(E e) 1.默认将元素添加到双向链表的尾部; 2.在添加的时候,会先让一个指针指向最后一个节点,然后创建一个新的节点 final Node<E> newNode = new Node<>(前继节点, 添加元素, 后继节点); 3.最后让之前的尾部节点与最新节点建立连接关系即可;⭐remove(Object o) 1.首先判断你删除的元素是否为null,区别在于比较的时候...原创 2020-12-16 15:12:52 · 175 阅读 · 0 评论 -
复习ArrayList源码增删改查
ArrayList⭐add(E e)方法说明:添加元素的时候需要先判断数组容量是否可以容纳新添加这个元素,首先会比较原数据的长度和添加后数组长度,是否超出原数组长度; 1.如果没有超出,则直接将该新增元素添加到该数组中; 2.如果超出,则进行扩容。 2.1正常情况扩容为原数组长度的1.5倍,然后再与添加后数组长度进行比较, 2.1.1)如果仍然比添加后的数组长度小,那么直接使用添加后数组的长度进行扩容; 2.1.2)如果发现扩...原创 2020-12-14 20:11:21 · 111 阅读 · 0 评论