随笔分类 -  Java中的集合类

摘要:生产者: 消费者: 测试: 输出: 阅读全文
posted @ 2019-08-13 12:53 LeeJuly 阅读(225) 评论(0) 推荐(0) 编辑
摘要:前导知识: 强,软,弱,虚引用区别? 强引用是使用最普遍的引用:Object o=new Object(); 即使发生OOM也不会被GC 将对象的引用显示地置为null:o=null; // 帮助垃圾收集器回收此对象 软引用用来描述一些还有用但是并非必须的对象,在Java中用java.lang.re 阅读全文
posted @ 2019-06-10 22:52 LeeJuly 阅读(146) 评论(0) 推荐(0) 编辑
摘要:优先级队列使用堆来实现。默认是小根堆。 关键属性: 几个方法的区别: remove()和poll()出队,队首元素如果为空remove()抛出异常,poll()返回null 获取队首元素,队首元素如果为空element()抛出异常,peek()返回null 参考: http://cmsblogs.c 阅读全文
posted @ 2019-06-10 22:21 LeeJuly 阅读(91) 评论(0) 推荐(0) 编辑
摘要:红黑树是一种近似平衡的二叉查找树,最长路径长度不超过最短路径长度的2倍: HashMap为什么底层不选用AVL树: AVL树是一棵严格的平衡树,它所有的子树都满足二叉平衡树的定义。因此AVL树高被严格控制在XXX,因此AVL树的查找比较高效。但AVL树插入、删除结点后旋转的次数比红黑树多。 红黑树用 阅读全文
posted @ 2019-04-19 00:49 LeeJuly 阅读(672) 评论(0) 推荐(0) 编辑
摘要:CopyOnWriteArrayList是ArrayList的线程安全版本,内部也是通过数组实现,每次对数组的修改都完全拷贝一份新的数组来修改,修改完了再替换掉老数组,这样保证了只阻塞写操作,不阻塞读操作,实现读写分离。 关键属性 添加一个元素到指定索引处: 过程: (1)加锁; (2)检查索引是否 阅读全文
posted @ 2019-04-05 17:16 LeeJuly 阅读(143) 评论(0) 推荐(0) 编辑
摘要:LinkedHashMap内部维护了一个双向链表,能保证元素按插入的顺序访问,也能以访问顺序访问。 底层通过LinkedList+HashMap实现 关键属性: 最近访问最近插入的都放在尾部,通过afterNodeAccess(Node<K,V> e)方法 LPU(Least Recently Us 阅读全文
posted @ 2019-04-05 16:48 LeeJuly 阅读(1175) 评论(0) 推荐(0) 编辑
摘要:查询的话就和普通的平衡二叉树一样。时间复杂度O(logn) 这里我们回顾红黑树的特点: 1.根节点为黑色 2.红色节点的子节点一定都是黑色 3.每个叶子节点都是黑色的(空节点) 4.从任一节点到其每个叶子的路径都包含相同数目的黑色节点。 红黑树和普通的平衡二插树最大的优势就是任何不平衡都可以在三次以 阅读全文
posted @ 2019-03-18 11:53 LeeJuly 阅读(148) 评论(0) 推荐(0) 编辑
摘要:HashMap不是线程安全的,hashTable是线程安全的,但是它对整个hash表加锁,get/put操作都加锁了,在高并发的情况下性能不好,于是就有了ConcurrentHashMap ConcurrentHashMap的读操作是不用加锁的。 为什么1.8不再采用reentrantlock,主要 阅读全文
posted @ 2019-03-18 08:56 LeeJuly 阅读(173) 评论(0) 推荐(0) 编辑
摘要:集合类中线程安全的就只有,vector,hashtable,concurrentHashmap ArrayList: ArrayList 实现于 List、RandomAccess 接口。可以插入空数据,也支持随机访问。 ArrayList的初始容量为10,这里我们主要了解一下ArrayList的扩 阅读全文
posted @ 2019-03-14 15:35 LeeJuly 阅读(174) 评论(0) 推荐(0) 编辑
摘要:解决hash冲突的方法: 问题引入: 1.HashMap的源码,实现原理,JDK8对HashMap做了怎样的优化? 2.HaspMap扩容是怎样扩容的,为什么都是2的N次幂的大小。 Hashmap,两次哈希,第一次直接调用 key 的 hashcode 方法,第二次再调用一个函即hash= hash 阅读全文
posted @ 2019-02-22 17:23 LeeJuly 阅读(183) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示