
源码解读
给你糖别哭
在路上!
展开
-
Java源码解读(一)——HashMap的resize与put
HashMap是java面试必不可少的问题之一,这里只列出了java1.8中比较难读懂的put操作的源码,get操作的源码请自行阅读。new申请内存是在第一次的put操作时进行的resizefinal Node<K,V>[] resize() { Node<K,V>[] oldTab = table; int oldCap = (oldTab == ...原创 2019-06-05 18:01:58 · 747 阅读 · 0 评论 -
Java源码解读(二)——String中的indexOf(String)
前天面试,面试官给了我一小时,让我写一个判断子串的函数,我虽然想到了KMP,但是不知其实现原理,就写了个暴力算法。今天看了一下Java源码中查找子串的函数,发现它们也是用的暴力(笑:先遍历父串,找到与子串第一个字符相同的字符的索引,再从该索引开始进行后面字符的比较,如果成功则返回该索引,否则从该索引后面继续寻找子串。indexOf(String)public int indexOf(Stri...原创 2019-06-06 17:54:26 · 2174 阅读 · 9 评论 -
Java源码解读(三)——HashMap深入理解之增删查改
主要成员变量// 存储的键值对,其length为capacitytransient Node<K,V>[] table;// 实际存储的键值对的个数,超过threshold则resizetransient int size;// 修改次数,当put/remove/clear等改变集合的操作时,都会加一// 用于并发情况下:A线程迭代器遍历,B线程改变集合,此时出现fai...原创 2019-08-10 01:12:27 · 370 阅读 · 0 评论