
重学Java集合类
懋为
居安思危,思则有备,有备无患,敢以此规。
展开
-
重学Java集合类(一)—— 集合类简介
前言Java中的集合类包含的内容很多而且很重要,很多数据的存储和处理(排序,去重,筛选等)都需要通过集合类来完成。集合类主要有两大分支:Collection MapCollection接口Collection接口类图如下: Collection接口是集合类的根接口,Java中没有提供这个接口的直接的实现类。但是却让其被继承产生了三个接口,就是Set、List和Que原创 2018-01-10 23:14:35 · 255 阅读 · 0 评论 -
重学Java集合类(三)—— Map接口(下)
前言接前一篇博文,继续探析Map接口的实现类。Map|------HashTable| |-------WeakHashTable|------HashMap| |-------LinkedHashMap|------TreeMap|------WeakHashMapHashTableHashTable不但实现了Map接口原创 2018-01-21 10:34:06 · 166 阅读 · 0 评论 -
重学Java集合类(二)—— List接口
前言List接口在Collection的基础上添加了大量的方法,使得可以在List的中间插入和删除元素,并且存放的顺序与插入的顺序一致。List接口public interface ListE> extends CollectionE> { // 查询操作 int size(); boolean isEmpty(); boolean contai原创 2018-01-14 16:22:54 · 253 阅读 · 0 评论 -
重学Java集合类(三)—— Map接口(上)
前言Map接口储存一组成对的键-值对象,提供key(键)到value(值)的映射,Map中的key不要求有序,不允许重复。value同样不要求有序,但可以重复。最常见的Map实现类是HashMap,他的储存方式是哈希表,优点是查询指定元素效率高。Map接口提供了将键映射到集合的对象,一个映射不能包含重复的键,每个键最多只能映射到一个值。Map接口中同样提供了集合的常用方法,如clear原创 2018-01-17 23:35:22 · 238 阅读 · 0 评论 -
重学Java集合类(四)—— Set接口
前言Set不保存重复的元素。Set中最常被使用的是测试归属性,你可以很容易的询问某个对象是否在某个Set中。Set具有与Collection完全一样的接口,因此没有任何额外的功能。实际上Set就是Collection,只是行为不同。Set接口Set接口内容如下图: 从上图中我们可以很清晰的看出,Set接口继承了Collection接口,甚至可以说Set接口就是Collecti原创 2018-01-28 16:52:37 · 182 阅读 · 0 评论 -
重学Java集合类(五)—— 集合类的遍历
前言在实际开发过程中,我们经常会遇到遍历集合类的情况。但是其内部实现又是如何的呢?使用时需要注意的地方呢?本文一一道来。常用遍历方式Java集合类包含了List接口、Map接口和Set接口,分别看一下三者的便利方式。List接口的遍历方式 for (int i = 0; i list.size(); i++) { //doSomething }原创 2018-01-28 21:10:47 · 256 阅读 · 0 评论 -
重学Java集合类(六)—— 红黑树和TreeMap
前言红黑树(Red Black Tree) 是一种自平衡二叉查找树。JDK1.8中,当HashMap的链表达到一定长度后,会将链表转化为红黑树。同时,TreeMap中数据的存储结构就是红黑树。红黑树红黑树定义红黑树是一个平衡的二叉树,但不是一个完美的平衡二叉树。红黑树是在普通二叉树上,对每个节点添加一个颜色属性形成的,同时整个红黑二叉树需要同时满足一下五条性质 :节点...原创 2018-02-19 22:45:56 · 256 阅读 · 0 评论 -
重学Java集合类(七)—— ConcurrentHashMap
前言众所周知,HashMap并非线程安全的,这使得我们在实际使用时,尤其是多线程环境下,会面临诸多不便。我们可以通过调用Collections.synchronizedMap方法获取一个线程安全的HashMap,但是查看该方法的源代码发现,具体逻辑就是用synchronized关键字修饰原先HashMap的成员方法。此举虽能达到线程安全的目的,但是访问效率会大打折扣。因此本文将介绍一种线程安全...原创 2018-02-20 16:19:20 · 171 阅读 · 0 评论