来温故一下Android中需要知道的Java集合框架吧

简介: 前言子曰:温故而知新,可以为师矣。做android已经有好一段时间了,今天突然看到代码中写的各种用来存储数据的ArrayList、管理Activity的LinkedList、用来Retrofit请求数据时多个参数拼接的HashMap。

前言

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

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

正文

img_fcd9464a57141981ea30baf8b2bcf30a.png
image.png

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


img_98bf65a3d5e0e352f5edeb16dae42c47.png
image.png
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当做栈使用,这个我本人并没有使用过,如果大家有什么见解可以提出来。

下面附一张图:


img_68e63530b408c9eb2dfe045ccd082d45.png
image.png

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

补充一张图:


img_d5904838c0b1dbd276e0d2c79ecc990e.png
image.png

文章基本上就到这里,文章只是对android开发过程中常用的一些集合框架做一些个人理解的东西,如有地方不对或者有不同理解的可以提出来,有意向详细了解的可以戳链接:
https://www.cnblogs.com/xiaoxi/p/6089984.html
个人感觉,这个博主总结的还是挺全面的。
也可以去官网了解。

相关文章
|
1月前
|
Java 数据库
在Java中使用Seata框架实现分布式事务的详细步骤
通过以上步骤,利用 Seata 框架可以实现较为简单的分布式事务处理。在实际应用中,还需要根据具体业务需求进行更详细的配置和处理。同时,要注意处理各种异常情况,以确保分布式事务的正确执行。
|
1月前
|
消息中间件 Java Kafka
在Java中实现分布式事务的常用框架和方法
总之,选择合适的分布式事务框架和方法需要综合考虑业务需求、性能、复杂度等因素。不同的框架和方法都有其特点和适用场景,需要根据具体情况进行评估和选择。同时,随着技术的不断发展,分布式事务的解决方案也在不断更新和完善,以更好地满足业务的需求。你还可以进一步深入研究和了解这些框架和方法,以便在实际应用中更好地实现分布式事务管理。
|
1月前
|
JSON Java Apache
非常实用的Http应用框架,杜绝Java Http 接口对接繁琐编程
UniHttp 是一个声明式的 HTTP 接口对接框架,帮助开发者快速对接第三方 HTTP 接口。通过 @HttpApi 注解定义接口,使用 @GetHttpInterface 和 @PostHttpInterface 等注解配置请求方法和参数。支持自定义代理逻辑、全局请求参数、错误处理和连接池配置,提高代码的内聚性和可读性。
153 3
|
16天前
|
存储 缓存 安全
Java 集合江湖:底层数据结构的大揭秘!
小米是一位热爱技术分享的程序员,本文详细解析了Java面试中常见的List、Set、Map的区别。不仅介绍了它们的基本特性和实现类,还深入探讨了各自的使用场景和面试技巧,帮助读者更好地理解和应对相关问题。
36 5
|
1月前
|
人工智能 前端开发 Java
基于开源框架Spring AI Alibaba快速构建Java应用
本文旨在帮助开发者快速掌握并应用 Spring AI Alibaba,提升基于 Java 的大模型应用开发效率和安全性。
221 12
基于开源框架Spring AI Alibaba快速构建Java应用
|
29天前
|
存储 缓存 安全
Java 集合框架优化:从基础到高级应用
《Java集合框架优化:从基础到高级应用》深入解析Java集合框架的核心原理与优化技巧,涵盖列表、集合、映射等常用数据结构,结合实际案例,指导开发者高效使用和优化Java集合。
40 4
|
1月前
|
消息中间件 Java 数据库连接
Java 反射最全详解 ,框架设计必掌握!
本文详细解析Java反射机制,包括反射的概念、用途、实现原理及应用场景。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
Java 反射最全详解 ,框架设计必掌握!
|
1月前
|
开发框架 Java 关系型数据库
Java哪个框架适合开发API接口?
在快速发展的软件开发领域,API接口连接了不同的系统和服务。Java作为成熟的编程语言,其生态系统中出现了许多API开发框架。Magic-API因其独特优势和强大功能,成为Java开发者优选的API开发框架。本文将从核心优势、实际应用价值及未来展望等方面,深入探讨Magic-API为何值得选择。
58 2
|
1月前
|
前端开发 Java 数据库连接
你不可不知道的JAVA EE 框架有哪些?
本文介绍了框架的基本概念及其在编程领域的应用,强调了软件框架作为通用、可复用的软件环境的重要性。文章分析了早期Java EE开发中使用JSP+Servlet技术的弊端,包括可维护性差和代码重用性低等问题,并阐述了使用框架的优势,如提高开发效率、增强代码规范性和可维护性及提升软件性能。最后,文中详细描述了几种主流的Java EE框架,包括Spring、Spring MVC、MyBatis、Hibernate和Struts 2,这些框架通过提供强大的功能和支持,显著提升了Java EE应用的开发效率和稳定性。
89 1
|
1月前
|
Java
Java 8 引入的 Streams 功能强大,提供了一种简洁高效的处理数据集合的方式
Java 8 引入的 Streams 功能强大,提供了一种简洁高效的处理数据集合的方式。本文介绍了 Streams 的基本概念和使用方法,包括创建 Streams、中间操作和终端操作,并通过多个案例详细解析了过滤、映射、归并、排序、分组和并行处理等操作,帮助读者更好地理解和掌握这一重要特性。
35 2