![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
集合
文章平均质量分 59
孤竹彧
一个想进步,又控制不住自己的小码农
展开
-
HashMap理解与自定义面试题
这里的问题,回答都是jdk1.8之后的,1.8之前的参考意义不大。这里的问题及回答都是自己的理解,如有不同意见欢迎讨论。简单的说明下HashMap的数据结构?HashMap由数组+链表(红黑树)组成。链表什么时候会转成红黑树?链表长度达到8,且数组长度达到64.链表长度大于8时一定会转成红黑树吗?数组长度要达到64;为什么要求数组长度达到64?保持平衡,使用红黑树也比直接hash定位到性能低.为什么使用红黑树而不是普通二叉树?普通二叉树有退化成链表的可能性,不够平衡。为什么不使用完全原创 2021-09-13 15:35:08 · 89 阅读 · 0 评论 -
TreeSet和HashSet的不同之处(也是TreeMap和HashMap的不同之处)
TreeSet和HashSet的不同之处(也是TreeMap和HashMap的不同之处)1)TreeSet和HashSet都是利用对应的Map的key值进行数据保存(TreeMap和HashMap,所以map的value肯定是可以为null的)2)TreeMap是使用黑白树进行数据保存,HashMap是进行hash计算后存入数组+链表(或黑白二叉树)以上2点,大家只要学习过,都会记得,但是我要说的是,TreeSet保存的数据,必须是继承Comparable接口或者要设定好Comparator比较器的,原创 2020-09-14 15:31:34 · 250 阅读 · 0 评论 -
java8HashMap源码阅读
之前阅读java7及之前版本HashMap源码时候,没有看全,所以这次决定一个一个方法去看。先说结论,看完了除TreeNode的部分,红黑树的操作太头疼了(主要是源码很多代码进行了合并之类的,效率高,可读性差),还好我之前看过红黑树,关于红黑的,可以看我的另一个文章 算法导论之第十三章-红黑树HashMap内部的数据结构由Node组成的数组table,一般的构造器并不会生成table数组,而...原创 2020-01-20 11:44:33 · 160 阅读 · 0 评论 -
聊聊fail-fast(并不是所有迭代时删除都会报错)
只记得在哪看到,说在集合对象的增强for时,不能进行增删改操作,不然就会报错。下面是我拷来的说明:fail-fast:直接在容器上进行遍历,在遍历过程中,一旦发现容器中的数据被修改了,会立刻抛出ConcurrentModificationException异常导致遍历失败。java.util包下的集合类都是快速失败机制的, 常见的的使用fail-fast方式遍历的容器有HashMap和Arra...原创 2019-11-12 18:24:50 · 114 阅读 · 0 评论 -
BlockingQueue的使用(可用于实现生产者与消费者模式)
BlockingQueue的含义是阻塞队列即在队列满的时候,入队列会阻塞在队列空的时候,出队列会阻塞特殊之处在于阻塞,所以我们就了解两个方法put(Object obj):在队列满时阻塞,直到队列不满,或者线程中断take():在队列为空时阻塞,直到队列插入新值,或者线程中断分类:ArrayBlockingQueue实现是数组(构造参数必须传数组长度参数)LinkedBlocki...原创 2019-10-29 14:59:07 · 174 阅读 · 0 评论 -
集合之PriorityQueue的使用
PriorityQueue实现了Queue接口,所以属于队列PriorityQueue最大的特点是,时刻保持有序(最重要的特性)构造参数中加入Comparator,可以自定义排序方式 PriorityQueue<ListNode> listNodes = new PriorityQueue<>(new Comparator<ListNode>() { ...原创 2019-10-16 11:36:29 · 883 阅读 · 0 评论