Java编程拾遗『TreeMap』
通过之前两节的讲述,相信对二叉树、以及红黑树有了初步的认识。本篇文章来讲述一下基于红黑树实现的Map—TreeMap。之前介绍HashMap时,我们都知道,HashMap键值对之间没有特定的顺序。结合之前讲的红黑树特点,我们也可以猜测到,T...
通过之前两节的讲述,相信对二叉树、以及红黑树有了初步的认识。本篇文章来讲述一下基于红黑树实现的Map—TreeMap。之前介绍HashMap时,我们都知道,HashMap键值对之间没有特定的顺序。结合之前讲的红黑树特点,我们也可以猜测到,T...
前面一篇文章介绍了二叉排序数的相关算法细节,并引出一种特殊的排序二叉树—红黑树。在Java API中TreeMap底层就是通过红黑树实现的,本篇文章来看一下红黑树的相关算法细节及Java实现。在查阅相关资料时,在美团官方技术博客看到一篇很好...
在HashMap那篇文章讲过,在Java8中,HashMap是通过数组 + 链表 + 红黑树组织的,当链表中元素个数大于8时,会将链表转化成红黑树。而且Java API中TreeMap也是通过红黑树实现的,所以讲解红黑树,对于我们更好的了解...
在介绍Java中的HashSet之前,我们首先来看一下数学上集合的特性: 无序性:一个集合中,每个元素的地位都是相同的,元素之间是无序的。集合上可以定义序关系,定义了序关系后,元素之间就可以按照序关系排序。但就集合本身的特性而言,元素之间没...
之前用了两篇文章讲解了ArrayList和LinkedList的实现和使用,ArrayList和LinkedList都存在一个问题,查找元素效率比较低,都需要一一对比,时间复杂度是O(N)。还是回到那句话,每种数据结构都不是凭空出现的,肯定...
上篇文章讲了List的链表实现——LinkedList,同时LinkedList也实现了Dequeue接口,可以通过LinkedList实现栈和队列的操作。刚好昨天看到一篇关于线程池中BlockingQueue相关的不错的文章,这里分享一下...
Java8之前如果想对一个集合排序,那么集合元素要么实现了Comparable接口,要么另外定义一个继承于Comparator的比较器并实现compare方法,使用起来是非常麻烦的。在我之前的文章中也介绍了一种Guava的排序实现方案,也是...
partitioningBy分区是一种特殊的分组,可以将List划分为两个子List,使用起来比较简单,如下: @Test public void partitionByTest(){ List<Integer> intList...
提到Group By,首先想到的往往是sql中的group by操作,对搜索结果进行分组。其实Java8 Streams API中的Collector也支持流中的数据进行分组和分区操作,本片文章讲简单介绍一下,如何使用groupingBy ...
Reduce,顾名思义为减少的意思,就是根据指定的计算模型将Stream中的值计算得到一个最终结果。在之前的一篇文章Java8函数式编程中简单介绍,Stream的count、min 和max方法底层都是依赖reduce实现的,本篇文章将简单...