摘要: 上一篇很水的介绍完了TreeMap,这一篇来看看更水的TreeSet。 本文将从以下几个角度进行展开: 1、TreeSet简介和使用栗子 2、TreeSet源码分析 本篇大约需食用10分钟,各位看官请随意享用。 一、TreeSet简介 TreeSet是Set家族中的又一名懒将,跟其他两位一样,与对应 阅读全文
posted @ 2018-09-02 23:59 弗兰克的猫 阅读(826) 评论(0) 推荐(4) 编辑
摘要: 今天来看看Map家族的另一名大将——TreeMap。前面已经介绍过Map家族的两名大将,分别是HashMap,LinkedHashMap。HashMap可以高效查找和存储元素,LinkedHashMap可以在高效查找的基础上对元素进行有序遍历,那么TreeMap又有什么特点呢?别急别急,看完这篇你就 阅读全文
posted @ 2018-08-28 23:42 弗兰克的猫 阅读(655) 评论(4) 推荐(3) 编辑
摘要: 当当当当当当当,本来打算出去浪来着,想想还是把这个先一起写完吧,毕竟这篇的主角跟我一样是一个超级偷懒的角色——LinkedHashSet,有多偷懒?看完你就知道了。 本篇将从以下几个方面对LinkedHashSet进行介绍: 1、LinkedHashSet中的特性 2、LinkedHashSet源码 阅读全文
posted @ 2018-08-11 11:53 弗兰克的猫 阅读(663) 评论(10) 推荐(3) 编辑
摘要: 今天来介绍一下容器类中的另一个哈希表———》LinkedHashMap。这是HashMap的关门弟子,直接继承了HashMap的衣钵,所以拥有HashMap的全部特性,并青出于蓝而胜于蓝,有着一些HashMap没有的特性。 接下来就一起来看看这个关门弟子到底有多大能耐。 本文将从以下几点对Linke 阅读全文
posted @ 2018-08-10 21:17 弗兰克的猫 阅读(1254) 评论(10) 推荐(1) 编辑
摘要: 这次介绍一下List接口的另一个践行者——LinkedList,这是一位集诸多技能于一身的List接口践行者,可谓十八般武艺,样样精通,栈、队列、双端队列、链表、双向链表都可以用它来模拟,话不多说,赶紧一起来看看吧。 本篇将从以下几个方面对LinkedList进行解析: 1.LinkedList整体 阅读全文
posted @ 2018-08-02 23:21 弗兰克的猫 阅读(1223) 评论(5) 推荐(5) 编辑
摘要: 前面花了好几篇的篇幅把HashMap里里外外说了个遍,大家可能对于源码分析篇已经讳莫如深了。别慌别慌,这一篇来说说集合框架里最偷懒的一个家伙——HashSet,为什么说它是最偷懒的呢,先留个悬念,看完本文之后,你就会知道所言不假了。 本篇将从以下几点来进行介绍: 1.HashSet的特点和使用场景 阅读全文
posted @ 2018-07-27 08:32 弗兰克的猫 阅读(690) 评论(2) 推荐(0) 编辑
摘要: 当当当当当当当,好久不见,最近又是换工作,又是换房子,忙的不可开交,断更了一小段时间,最重要的一篇迟迟出不来,每次都犹抱琵琶半遮面,想要把它用通俗易懂的方式进行说明,确实有一定的难度,可愁煞我也,但自己挖的坑,哭着也要把它补上。请允许我当一回标题党。 好了,言归正传,本篇主要内容便是介绍HashMa 阅读全文
posted @ 2018-07-19 22:49 弗兰克的猫 阅读(17195) 评论(30) 推荐(39) 编辑
摘要: 前两篇对HashMap这家伙的主要方法,主要算法做了一个详细的介绍,本篇主要介绍HashMap中默默无闻地工作着的集合们,包括KeySet,values,EntrySet,以及对应的迭代器:HashIterator,KeyIterator,ValueIterator,EntryIterator和 f 阅读全文
posted @ 2018-06-22 17:03 弗兰克的猫 阅读(1272) 评论(0) 推荐(4) 编辑
摘要: 上一篇中对HashMap中的基本内容做了详细的介绍,解析了其中的get和put方法,想必大家对于HashMap也有了更好的认识,本篇将从了算法的角度,来分析HashMap中的那些函数。 HashCode 先来说说HashMap中HashCode的算法,在上一篇里,我们看到了HashMap中的put方 阅读全文
posted @ 2018-06-18 21:32 弗兰克的猫 阅读(1237) 评论(4) 推荐(7) 编辑
摘要: 准备了很长时间,终于理清了思路,鼓起勇气,开始介绍本篇的主角——HashMap。说实话,这家伙能说的内容太多了,要是像前面ArrayList那样翻译一下源码,稍微说说重点,肯定会让很多人摸不着头脑,不能把复杂的东西用尽量简单的方式说明白,那就说明讲的挺失败的(面壁中)。所以这次决定把内容分四篇进行讲 阅读全文
posted @ 2018-06-16 19:39 弗兰克的猫 阅读(1725) 评论(6) 推荐(17) 编辑
摘要: 今天要介绍的是List接口中最常用的实现类——ArrayList,本篇的源码分析基于JDK8,如果有不一致的地方,可先切换到JDK8后再进行操作。 本篇的内容主要包括这几块: 1.源码结构介绍 2.源代码展示 3.要点说明 4.优缺点说明 一、源码结构介绍 ArrayList的源码跟之前的接口源码比 阅读全文
posted @ 2018-06-03 19:01 弗兰克的猫 阅读(1134) 评论(0) 推荐(8) 编辑
摘要: 今天要说的是Collection族长下的三名大将之一,List,Set,Queue中的List,它们都继承自Collection接口,所以Collection接口的所有操作,它们自然也是有的。 List,Set,Queue,分别是列表,集合,队列的意思,代表着Collection家族下的三种不同的势 阅读全文
posted @ 2018-05-31 16:44 弗兰克的猫 阅读(926) 评论(4) 推荐(2) 编辑
摘要: 上一篇里介绍了容器家族里的大族长——Collection接口,今天来看看容器家族里的二族长——Map接口。 Map也是容器家族的一个大分支,但里面的元素都是以键值对(key-value)的形式存放的,就像字典一样,用相应的key就可以拿到相应的value。 先来看看Map接口的内容,下面是阉割版的M 阅读全文
posted @ 2018-05-22 01:36 弗兰克的猫 阅读(755) 评论(0) 推荐(1) 编辑
摘要: 今天来看看Java里的一个大家伙,那就是容器。 所谓容器,就是专门用来装对象的东西,如果你学过高数,没错,就跟里面说的集合是一个概念,就是一堆对象的集合体,但是集合类是容器类中的一个子集,为了区别表示,所以还是叫容器类,之后所说的集合类只是容器里的一个子集,之后会有详细介绍。 容器就是用来存放和管理 阅读全文
posted @ 2018-05-18 01:02 弗兰克的猫 阅读(1280) 评论(0) 推荐(3) 编辑
摘要: 今天继续讲解java中的异常处理机制,主要介绍Exception家族的主要成员,自定义异常,以及异常处理的正确姿势。 Exception家族 一图胜千言,先来看一张图。 Exception这是一个父类,它有两个儿子,IOException和RuntimeException,每个儿子都很能生,所以它有 阅读全文
posted @ 2018-05-10 01:59 弗兰克的猫 阅读(548) 评论(0) 推荐(0) 编辑
摘要: 当当当当当当,各位看官,好久不见,甚是想念。 今天我们来聊聊Java里的一个小妖精,那就是异常。 什么是异常?什么是异常处理? 异常嘛,顾名思义就是不正常,(逃),是Java程序运行时,发生的预料之外的事情,它阻止了程序按照程序员的预期正常执行。 异常处理,应该说异常处理机制,就是专门用来制服这个小 阅读全文
posted @ 2018-05-08 23:48 弗兰克的猫 阅读(749) 评论(2) 推荐(0) 编辑
摘要: 上篇文章中介绍了泛型是什么,为什么要使用泛型以及如何使用泛型,相信大家对泛型有了一个基本的了解,本篇将继续讲解泛型的使用,让你对泛型有一个更好的掌握和更深入的认识。 上篇中介绍完泛型之后,是不是觉得泛型挺好用的?既消除了Object的不安全类型转化,又可以很方便的进行类型对象的存取,但是,等一下,有 阅读全文
posted @ 2018-04-14 17:08 弗兰克的猫 阅读(5189) 评论(2) 推荐(1) 编辑
摘要: 泛型是一个很有意思也很重要的概念,本篇将简单介绍Java中的泛型特性,主要从以下角度讲解: 1.什么是泛型。 2.如何使用泛型。 3.泛型的好处。 1.什么是泛型? 泛型,字面意思便是参数化类型,平时所面对的类型一般都是具体的类型,如果String,Integer,Double,而泛型则是把所操作的 阅读全文
posted @ 2018-03-08 21:04 弗兰克的猫 阅读(736) 评论(2) 推荐(0) 编辑
摘要: 前一段时间一直忙,所以没什么时间写博客,拖了这么久,也该更新更新了。最近看到各种知识付费的推出,感觉是好事,也是坏事,好事是对知识沉淀的认可与推动,坏事是感觉很多人忙于把自己的知识变现,相对的在沉淀上做的实际还不够,我对此暂时还没有什么想法,总觉得,慢慢来,会更快一点,自己掌握好节奏就好。 好了,言 阅读全文
posted @ 2018-02-05 21:28 弗兰克的猫 阅读(613) 评论(0) 推荐(0) 编辑
摘要: 今天来介绍另一种更为强大的代理——Cglib动态代理。 什么是Cglib动态代理? 我们先回顾一下上一篇的jdk动态代理,jdk动态代理是通过接口来在运行时动态创建委托类的代理对象,但是跟静态代理一样有一个缺点,就是必须和委托类实现相同的接口,当接口数量增加时,便需要增加代理类的数量才能满足需求,而 阅读全文
posted @ 2017-12-30 21:45 弗兰克的猫 阅读(2627) 评论(0) 推荐(1) 编辑