最全Java集合框架,Android开发必会

前言

子曰:温故而知新,可以为师矣。

做android已经有好一段时间了,今天突然看到代码中写的各种用来存储数据的ArrayList、管理Activity的LinkedList、用来Retrofit请求数据时多个参数拼接的HashMap。也许使用已经成为了一种习惯,可是使用他的理由又开始在脑海中慢慢淡化了,故写一篇文章来温故 在我们平时的android开发中,常用的java集合框架。

正文

十年Android程序员日记:最全Java集合框架,Android开发必会

这张图已经不陌生了,可是在这么繁琐的java集合框架中,真正在开发中使用的不过也就那几个。所以我们来看下面这张简化图,然后来阐述其中的部分我们常用的:

十年Android程序员日记:最全Java集合框架,Android开发必会

1、所有的集合都在 java.util 包下,java的集合几乎是从Collection 和 map这两个接口中派生出来的,而这两个接口又有一些子类(包括子接口和实现类)

2、List 继承于 Collection,允许元素重复,而且会维护元素顺序;访问时可以通过索引去访问。

3、Set 也继承于 Collection,保证了元素的唯一性,反之不保证元素的顺序;访问他当中的元素时,只能通过元素本身去访问。

4、Map 是一个存储键值对的,也就是说你存东西要有钥匙和箱子,你要找到这个箱子就必须有钥匙,就是所谓的 Key – Value;它与Collection没有任何关系

5、Iterator 我们叫他迭代器,一般用来遍历集合中的元素

下面我们再来细说一下List、Set、Map中的子类

List

上面我们已经说了,List是一个有序的集合。

List中包括一下几个部分:

ArrayList

ArrayList应该是我们在android开发中最最最常用的一个集合了,每一个ArrayList都会有一个初始化容量(10),每次我们add元素的时候,它都会对它的容量进行检测,如果控件不足就会自动对其进行扩容。

它是数组结构,并且它拥有几个特点: 查找速度快,线程不安全,增删比较慢。

所有的特点都是相对而言,因为它的查找速度快,我们在列表中的点击事件等都会需要查找集合中的某个元素,然后对其进行操作,这样我们就可以很快的相应点击事件。

LinkedList

LinkedList与ArrayList不同,它的实现方式是双向链表,每次查找元素时都要遍历一次,所以它的查找速度就劣于ArrayList。但是由于这个原因它的插入和删除都要快一些,

那么它的特点是:查找速度慢,线程不安全,增删比较快。

Vector

Vector的实现和操作几乎和ArrayList是一样的,唯一一点不同就是 Vector的线程是安全的,所以它的性能没有ArrayList好;这样一来,我们就可以根据其不同的特点去做不同的事情。

Stack

Stack继承自Vector,实现一个后进先出的堆栈。它提供了几个额外的方法,使得Vector当做栈使用,这个我本人并没有使用过,如果大家有什么见解可以提出来。

下面附一张图:

十年Android程序员日记:最全Java集合框架,Android开发必会

Set

包含以下几个:

HashSet

HashSet 是一个没有重复元素的集合。它是由HashMap实现的,不保证元素的顺序(这里所说的没有顺序是指:元素插入的顺序与输出的顺序不一致),而且HashSet允许使用null。但是只允许有一个null元素!

LinkedHashSet

LinkedHashSet继承自HashSet,其底层是基于LinkedHashMap来实现的,有序,非同步。(LinkedHashSet集合同样是根据元素的hashCode值来决定元素的存储位置,但是它同时使用链表维护元素的次序。这样使得元素看起来像是以插入顺序保存的,也就是说,当遍历该集合时候,LinkedHashSet将会以元素的添加顺序访问集合的元素。)

TreeSet

TreeSet是一个有序集合,其底层是基于TreeMap实现的,非线程安全。TreeSet可以确保集合元素处于排序状态。

Map

HashMap

以哈希表数据结构实现,查找对象时通过哈希函数计算其位置,它是为快速查询而设计的。也是我们最常用的一个Map集合

LinkedHashMap

它继承于 HashMap,它保留了输入顺序,所以,如果你要求顺序就使用它。

TreeMap

TreeMap 是一个有序的key-value集合,非同步,基于红黑树实现。 它有两种排序方式:一种是自然排序,一种是定制排序,具体取决于使用的构造方法。 这里不做过多的说明。

补充一张图:

十年Android程序员日记:最全Java集合框架,Android开发必会
十年Android程序员日记:最全Java集合框架,Android开发必会

最后

如果你看到了这里,觉得文章写得不错就点个赞呗?文章只是对android开发过程中常用的一些集合框架做一些个人理解的东西,如有地方不对或者有不同理解的可以提出来。如果你觉得那里值得改进的,请给我留言。一定会认真查询,修正不足。谢谢。

未经允许不得转载:PHP100中文网 - 中国第一档PHP资源分享门户 » 最全Java集合框架,Android开发必会

赞 (0) 打赏

评论 0

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏