随笔分类 -  Java集合框架

红黑树概念、TreeMap的插入以及旋转的详细解析(图解)
摘要:前言 网上有很多红黑树的插入解析,LZ也看了很多,在看着这些文章结合着源码看,总感觉没有get到重点,http://www.cnblogs.com/xrq730/p/6867924.html这篇文章讲述得很好,LZ也是借助这篇文章(文中很多概念性的地方都是复制这篇文章),了解了红黑树的插入旋转,只是 阅读全文

posted @ 2019-03-11 14:59 AoTuDeMan 阅读(1498) 评论(0) 推荐(0)

ArrayList在循环过程中删除中出现的问题
摘要:前言 之前搜索面试题的时候,出现了一个题:一个ArrayList在循环过程中删除,会不会出问题,为什么?心里想的答案是肯定会有问题但是又不知道是为什么,在搜索到答案后,发现里面其实并不简单,所以专门写篇文章研究一下。 for循环正向删除 先看示例,再解析原因: 运行后,输出结果: 发现,相邻的字符串 阅读全文

posted @ 2019-02-25 15:22 AoTuDeMan 阅读(5265) 评论(1) 推荐(2)

HashMap
摘要:哈希表 在介绍HashMap之前,先介绍一下哈希表的概念。 哈希表(Hash table,也叫做散列表),是根据关键码值(Key Value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。 记录 阅读全文

posted @ 2019-02-19 21:32 AoTuDeMan 阅读(338) 评论(0) 推荐(0)

LinkedList
摘要:初识LinkedList LinkedList是基于链表实现的,所以先来说明一下链表的概念。 链表:链表原先是C/C++的概念,是一种线性的存储结构,意思是将要存储的数据存在一个存储单元里面,这个存储单元里面除了存放有待存储的数据之外,还存储有其下一个存储单元的地址(下一个存储单元的地址是必要的,有 阅读全文

posted @ 2019-02-18 21:14 AoTuDeMan 阅读(200) 评论(0) 推荐(0)

ArrayList
摘要:前言 集合是Java中非常重要而且基础的内容,因为任何数据必不可少的就是对改数据进行如何的存储,集合的作用就是以一定的方式组织、存储数据。 对于集合,我认为比较关心的点有四个: 1.是否允许空 2.是否允许重复数据 3.是否有序,有序的意思就是读取数据的顺序和存放数据的顺序是否一致 4.是否线程安全 阅读全文

posted @ 2019-02-15 14:32 AoTuDeMan 阅读(219) 评论(0) 推荐(0)

SynchronousQueue
摘要:之前在文章线程池的内部实现里讲到了一种特殊的队列,就是直接提交队列SynchronousQueue。SynchronousQueue的容量为0,任何一个对SynchronousQueue的写要等待一个对SynchronousQueue的读,反之也一样。因此SynchronousQueue与其说是一个 阅读全文

posted @ 2018-10-17 10:57 AoTuDeMan 阅读(676) 评论(0) 推荐(0)

随机数据结构:跳表(SkipList)
摘要:在JDK的并发包中,除了常用的哈希表外,还有一种有趣的数据结构—跳表。跳表是一种可以用来快速查找的数据结构,有点类似于平衡树。它们的相同点都是可以对元素进行快速的查找。但有一个很重要的差别:对平衡树的插入和删除往往很可能导致平衡树进行一次全局的调整。而对跳表的插入和删除只需要对整个数据结构的局部进行 阅读全文

posted @ 2018-10-15 11:00 AoTuDeMan 阅读(697) 评论(0) 推荐(0)

数据共享通道:BlockingQueue
摘要:思考这样一个问题:在多线程的开发过程中,如何进行多个线程间的数据共享呢?比如:线程A希望给线程B发一个消息,用什么样的方式告知线程B比较合适呢? 解析:一般来说,我们希望整个系统是松散耦合的。就是说我们希望线程A能够通知线程B,又希望线程A不知道线程B的存在。这样,如果将来进行重构或者升级,我们可以 阅读全文

posted @ 2018-10-14 17:14 AoTuDeMan 阅读(301) 评论(0) 推荐(0)

CopyOnWriteArrayList
摘要:CopyOnWriteArrayList 是一个线程安全,读无锁写时复制的ArrayList。 CopyOnWriteArrayList 是典型的空间换时间方式。 写时复制:当新元素添加到CopyOnWriteArrayList时,会先把原来数组的元素拷贝到新的数组中,然后在新的数组中做写操作,写操 阅读全文

posted @ 2018-10-12 16:04 AoTuDeMan 阅读(390) 评论(0) 推荐(0)

高效读写的队列:ConcurrentLinkedQueue
摘要:队列(Queue)也是常用的数据结构之一。在JDK中提供了一个ConcurrentLinkedQueue类用来实现高并发的队列。从名字可以看出,这个队列是使用链表作为其数据的结构的。ConcurrentLinkedQueue应该算是在高并发的环境中性能最好的了。它之所以有很好的性能,是因为其内部复杂 阅读全文

posted @ 2018-10-10 10:45 AoTuDeMan 阅读(9942) 评论(4) 推荐(1)

导航