自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

卓立的博客

Java技术分享

原创 Java编程拾遗『EnumMap』

到本文为止,之前已经介绍过HashMap、TreeMap、LinkedHashMap,本篇文章介绍一下集合框架系列最后一种类型的Map——EnumMap。在之前的文章中,我曾介绍过Java API中枚举类的本质(Java编程拾遗『枚举类』),本文讲的EnumMap就是一种key为枚举类型的Map结构。EnumMap类的继承关系如下:Enum类继承了AbstractMap抽象类,在EnumM...

2019-01-29 10:37:54 1054

原创 Java编程拾遗『LinkedHashSet』

根据之前讲HashSet和HashMap的关系,TreeSet和TreeMap的关系,我们也能猜测出来LinkedHashSet肯定也是通过LinkedHashMap实现的,只是LinkedHashMap所有键值对的value都是一个特定的值,所有的key便组成了LinkedHashSet的所有集合元素,并能保证所有的集合元素按插入有序。LinkedHashSet类的继承关系如下图所示:可...

2019-01-29 10:36:59 65

原创 Java编程拾遗『LinkedHashMap』

在之前的文章,分别介绍过HashMap、TreeMap。HashMap就是普通的K-V存储数据结构,TreeMap在K-V存储数据结构的基础上添加了K-V之间按键值有序的特性。本篇文章来介绍一下,另一种特殊的K-V存储数据结构LinkedHashMap。LinkedHashMap是HashMap的子类,但可以保持元素按插入或访问有序(默认是按插入顺序有序)。LinkedHashMap继承关系如下:...

2019-01-29 10:36:07 90

原创 Java编程拾遗『TreeSet』

上篇文章我们讲了TreeMap的实现,熟悉了TreeMap的一大重要特征——保证键值对之间根据键的有序性。之前在讲HashSet时,我们知道HashSet是通过HashMap实现的。同样的道理,TreeSet其实也是基于TreeMap实现的。TreeSet相比于HashSet,一个突出的特点就是,可以保证元素之间的顺序。TreeSet类继承关系如下:TreeSet继承了AbstractSe...

2019-01-29 10:34:41 68

原创 Java编程拾遗『TreeMap』

通过之前两节的讲述,相信对二叉树、以及红黑树有了初步的认识。本篇文章来讲述一下基于红黑树实现的Map—TreeMap。之前介绍HashMap时,我们都知道,HashMap键值对之间没有特定的顺序。结合之前讲的红黑树特点,我们也可以猜测到,TreeMap是可以保证键值对之间的顺序的。TreeMap继承了AbstractMap抽象类,实现了NavigableMap、Cloneable、Seria...

2019-01-29 10:33:40 94

原创 Java编程拾遗『红黑树深入剖析及Java实现』

前面一篇文章介绍了二叉排序数的相关算法细节,并引出一种特殊的排序二叉树—红黑树。在Java API中TreeMap底层就是通过红黑树实现的,本篇文章来看一下红黑树的相关算法细节及Java实现。在查阅相关资料时,在美团官方技术博客看到一篇很好的文章,刚好是讲红黑树的,这里偷个懒,直接转载过来,下面是原文链接。原文链接:红黑树深入剖析及Java实现顺便分享一个我感觉学习数据结构的一个不错的网站...

2019-01-29 10:32:05 138

原创 Java编程拾遗『排序二叉树』

在HashMap那篇文章讲过,在Java8中,HashMap是通过数组 + 链表 + 红黑树组织的,当链表中元素个数大于8时,会将链表转化成红黑树。而且Java API中TreeMap也是通过红黑树实现的,所以讲解红黑树,对于我们更好的了解源码实现有着重要的意义。红黑树也是一种特殊的排序二叉树,所以本篇文章先来介绍一下排序二叉树这一数据结构的相关细节,然后再用一片文章介绍一下红黑树数据结构以及Ja...

2019-01-29 10:26:54 99

原创 Java编程拾遗『容器——HashSet』

在介绍Java中的HashSet之前,我们首先来看一下数学上集合的特性:无序性:一个集合中,每个元素的地位都是相同的,元素之间是无序的。集合上可以定义序关系,定义了序关系后,元素之间就可以按照序关系排序。但就集合本身的特性而言,元素之间没有必然的序。 互异性:一个集合中,任何两个元素都认为是不相同的,即每个元素只能出现一次。有时需要对同一元素出现多次的情形进行刻画,可以使用多重集,其中的元素...

2019-01-29 10:26:02 72

原创 Java编程拾遗『容器——HashMap』

之前用了两篇文章讲解了ArrayList和LinkedList的实现和使用,ArrayList和LinkedList都存在一个问题,查找元素效率比较低,都需要一一对比,时间复杂度是O(N)。还是回到那句话,每种数据结构都不是凭空出现的,肯定都有其特定的使用场景,而HashMap其实就是数据结构中的Hash结构的一种实现。本篇文章会介绍一下Java API中HashMap的使用及实现细节,并在后面一...

2019-01-29 10:25:12 107

原创 Java编程拾遗『final详解』

之前讲String类的时候,讲了String类是不可变类,其实现方式中有一个重要的保障是final—final修饰class以及final修饰了内部成员变量char[]。本文会详细讲一下final的使用场景以及使用final的好处。1. final的基本用法final是Java中的一个关键字,可以用来声明类、变量、方法和方法参数,分别表示类不可继承、成员变量引用不可改变、方法不可不该以及参...

2019-01-29 10:23:41 64 1

提示
确定要删除当前文章?
取消 删除