【夜深人静学JAVA | 第二十三篇】集合体系结构

news2024/11/15 8:25:08

目录

前言:

单列集合:     

set与list的区别:

双列集合:

map的特点:

总结:


前言:

                JAVA中为我们提供了很多集合,这些集合都有自己很独特的特点,因此我们要学习所有的集合,但是在学习所有的集合之前,我们还是先为大家介绍一下JAVA的集合体系结构,这样有利于大家更好的理解整个JAVA集合框架。

整个集合其实都可以分为两大类:单列集合与双列集合

单列集合:     

Java中的单列集合指的是一种只包含一个元素的集合,也被称作为单元素集合或者是单值集合,单列集合一次只能添加一个元素。在Java中,单列集合主要有以下几种:

1. Singleton Set
Singleton Set是一种只包含一个元素的集合,并且该元素不允许为空。Singleton Set中只有一个元素,所以它的size()方法返回值为1。

示例代码:

Set<String> singletonSet = Collections.singleton("hello");

2. Singleton List
Singleton List也是一种只包含一个元素的集合,但是它是有序的,并可以包含重复元素。Singleton List中只有一个元素,所以它的size()方法返回值为1。

示例代码:

List<String> singletonList = Collections.singletonList("hello");

需要注意的是,Singleton集合是不可变的,即不能向其中添加或删除元素。如果需要添加或删除元素,需要创建一个新的集合对象并赋值。此外,Singleton集合的元素只能通过迭代器进行访问。

set与list的区别:

list和set是Java中两种常用的集合类型,它们的主要区别在于以下几个方面:

1. 元素顺序
list是有序集合,即它维护元素的插入顺序,并且可以根据元素的索引(即插入顺序)进行访问和操作。set是无序集合,它不维护元素的插入顺序,并且不能根据元素的索引进行访问和操作。
2. 元素的唯一性
list可以包含重复元素,即同一个元素可以出现多次;set元素是唯一的,即同一个元素只能出现一次。
3. 实现方式
list可以通过数组或链表实现;set可以通过哈希表或树结构实现。因此,list的访问速度较快,但是添加、删除元素和查找元素需要较长的时间;而set的添加、删除元素和查找元素速度较快(平均时间复杂度为O(1)),但是访问元素需要较长的时间(时间复杂度为O(n))

总之,如果需要维护元素的顺序、允许包含重复元素、并且需要根据索引进行访问和操作,应该使用list;如果需要保证元素的唯一性、不需要维护元素的顺序,并且查找、添加与删除操作的性能要求较高,应该使用set

双列集合:

Java中的双列集合指的是一种包含两个元素的集合,它们可以存储类型不同的键值对,通常用于构建关联数组、映射等数据结构。在Java中,双列集合主要有以下几种:

1. Map
Map是一种键值对映射的集合,其中键和值都可以是任意类型的对象。Map中的键是唯一的,因此不能存在重复的键。常用的实现类包括HashMap、LinkedHashMap、TreeMap等。

示例代码:

Map<String, Integer> map = new HashMap<>();
map.put("Java", 100);
map.put("Python", 90);
map.put("C++", 80);

map常见的实现类: 

1. Hashtable
Hashtable是一种线程安全的键值对映射集合,与HashMap类似,但它的所有方法都是同步的。Hashtable也不允许键和值为空。Hashtable的实现方式是通过哈希表实现的。

示例代码:

Hashtable<String, Integer> hashtable = new Hashtable<>();
hashtable.put("Java", 100);
hashtable.put("Python", 90);
hashtable.put("C++", 80);

2. LinkedHashMap
LinkedHashMap是一种维护插入顺序的Map,它记录了元素的插入顺序,并可以按照插入顺序进行遍历。LinkedHashMap是通过哈希表和双向链表实现的。

示例代码:

Map<String, Integer> linkedHashMap = new LinkedHashMap<>();
linkedHashMap.put("Java", 100);
linkedHashMap.put("Python", 90);
linkedHashMap.put("C++", 80);

3. TreeMap
TreeMap是一种按照键的自然顺序或者比较器顺序进行遍历的有序Map。默认情况下,TreeMap按照键的自然顺序进行遍历,如果需要自定义排序规则,可以通过实现Comparator接口实现。TreeMap是通过红黑树实现的。

示例代码:

Map<String, Integer> treeMap = new TreeMap<>();
treeMap.put("Java", 100);
treeMap.put("Python", 90);
treeMap.put("C++", 80);

需要注意的是,Java中的双列集合都是基于Map接口实现的,因此它们都具有Map接口的基本方法,如put、get、containsKey等。在使用双列集合时,需要根据具体的使用场景和性能要求选择合适的实现类。

map的特点:

Map是一种键值对的数据结构,它的特点有以下几个:

1. 存储方式:Map 以键值对的形式来储存数据,即每个键都与一个值相关联。这种方式方便了数据的快速查找和访问,比如可以通过键快速获取对应的值。

2. 独一无二的键:Map 中的键是唯一的,即同一时刻只能存在一个与给定键相关联的值。如果插入的键已经存在,则新插入的值会覆盖旧值。

3. 无序性:Map 中的键值对是无序的,不像数组和列表那样有固定的顺序。我们可以根据键来进行查找和访问,而不关心它们在 Map 中的位置。

4. 可以存储不同类型的值:Map 中的键值对可以存储不同类型的数据,这使得 Map 成为存储和操作各种类型数据的理想数据结构。

5. 可以动态修改:Map 是一种动态数据结构,它可以根据需要进行插入、删除或修改键值对,这使得它非常灵活和实用。

总结:

        本文详细的介绍了单列集合与双列集合,为我们搭建了集合的一个基本的体系构架,后面我们也会一步一步的完善这些构架里面的内容。

如果我的内容对你有帮助,请点赞,评论,收藏。创作不易,大家的支持就是我坚持下去的动力!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/689266.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Nginx】第五章 Nginx配置实例-负载均衡

5.1 实现效果 浏览器地址栏输入地址 http://192.168.6.100/edu/index.html&#xff0c;负载均衡效果&#xff0c;将请求平均分配到8080和8081两台服务器上。 5.2 准备工作 &#xff08;1&#xff09;准备两台tomcat服务器&#xff0c;一台8080&#xff0c;一台8081 &#x…

数据结构C语言版本(上)

第一章 绪论 第一节 什么是数据结构&#xff1f; 估猜以下软件的共性&#xff1a;学生信息管理、图书信息管理、人事档案管理。   数学模型&#xff1a;用符号、表达式组成的数学结构&#xff0c;其表达的内容与所研究对象的行为、特性基本一致。 信息模型&#xff1a;信息…

FANUC机器人SRVO-220 SDI保险丝熔断报警处理方法

FANUC机器人SRVO-220 SDI保险丝熔断报警处理方法 一般在R-30iB Mate Plus柜的机器人上会遇到这个报警&#xff0c;R-30iB Plus柜则不会遇到这个报警。 如下图所示&#xff0c; 故障原因&#xff1a; 机器人EE接口的接线有短路的情况&#xff0c;检查EE接口的接线&#xff0…

Mybatis-Plus:实现自定义SQL

目录 1.简介 2.自定义SQL具体实现 2.1.注解SQL 2.2.Wrapper传参注解SQL 2.3.Wrapper传参xml文件SQL 2.4.正常传参XML文件SQL 3.总结 1.简介 Mybatis-Plus&#xff08;以下简称MBP&#xff09;的初衷是为了简化开发&#xff0c;而不建议开发者自己写SQL语句的&#xff1b…

多元分类预测 | Matlab鲸鱼算法(WOA)优化极限学习机(ELM)的分类预测,多特征输入模型。WOA-ELM分类预测模型

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 多元分类预测 | Matlab鲸鱼算法(WOA)优化极限学习机(ELM)的分类预测,多特征输入模型。WOA-ELM分类预测模型 多特征输入单输出的二分类及多分类模型。程序内注释详细,直接替换数据就可以用。程序语言为matlab,程…

【MySQL的存储过程】

目录 一、存储过程的概述1、存储过程的定义2、存储过程的优点 二、存储过程的步骤&#xff08;面试题&#xff09;1、创建存储过程2、存储过程的参数 三、删除存储过程四、存储过程的控制语句1. 条件语句if-then-else end if2. 循环语句while end while 一、存储过程的概述 …

微信小程序配合Tdesign实现验证码倒计时

效果 点击发送验证码后 实现 wxml <view class"userName"><view class"name">Code.<text>*</text></view><t-input placeholder"" value"{{code}}" type"number" bindchange"onP…

elasticsearch删除脏数据(根据指定字段删除数据)

场景 es中出现几条脏数据&#xff0c;现在要把这几条数据直接删掉 思路 找到要删除的脏数据&#xff0c;一般是根据id之类的字段来删除&#xff0c;因为id具有唯一性&#xff0c;其实和mysql差不多 执行 1、先查到该条记录&#xff08;注意我们这边使用的是 ticketId字段&…

vue中日,周,月,年时间选择器(基于elementui)

通过选择上面的选项展示选择不同的日期,周,月份,年份 因为项目中点击切换时需要传递不同的日期, 例如:日,即选择日期的00:00分-23:59 周:即选择当月的第三周,截取第三周的周一和第三周的周日为开始时间和截止时间传值 月,即选择月的第一天---选择月得最后一天传值 <templ…

【静态连接和动态连接】C/C++编程中的两种有效链接策略

一、静态连接和动态连接 链接分为两种&#xff1a;静态链接、动态链接。 1&#xff09;静态链接 静态链接&#xff1a;由链接器在链接时将库的内容加入到可执行程序中。 优点&#xff1a; 对运行环境的依赖性较小&#xff0c;具有较好的兼容性 缺点&#xff1a; 生成的程…

企业级微服务架构实战项目--xx优选-商品分类和搜索

一 商品分类和搜索 点击分类&#xff0c; &#xff08;1&#xff09;左侧显示商品分类&#xff0c;右侧显示对应商品分类下的商品列表 &#xff08;2&#xff09;如果商品分类下没有数据&#xff0c;则显示空内容

【正则表达式】匹配选择题、判断题

试卷文本 使用https://github.com/Minuhy/python_docx_export导出的word文档文本&#xff1a; 2022-2023学年第二学期期末课程考核试卷&#xff08;A1&#xff09;卷 课程名称&#xff1a; 分布式数据库HBase 考核形式&#xff1a; 上机考试 年级、专业、层次&#xff1…

【wireshark】rtp流分析

分析wifi下的rtp传输 选中一个udp传输 udp.dstport == 41447解码为rtp 右键 decode as 过滤某一条rtp流 udp.dstport == 41447 && rtp

vscode 加上c++11编译选项

问题描述 vscode 运行C11代码出现此错误 error This file requires compiler and library support for the ISO C 2011 standard. This support must be enabled with the -stdc11 or -stdgnu11 compiler options. 提示我们需要在编译命令中加一行选项&#xff0c;加入c11编译…

Java 17 版本的新特性

Java 17 版本的新特性 &#x1f497;Sealed类&#x1f497;Pattern Matching for instanceof&#x1f497; 垃圾回收器改进&#x1f497;Vector API&#x1f497; Switch表达式的增强&#x1f493;Sealed类的示例代码&#x1f493; Pattern Matching for instanceof的示例代码&…

若依ruoyi数据权限详解

若依ruoyi数据权限详解 什么是数据权限&#xff1f;若依使用数据权限的步骤&#xff1a;数据权限的原理 什么是数据权限&#xff1f; 简单的例子就是&#xff1a; 比如一张商品表goods&#xff0c;很多人添加数据&#xff0c;销售部的就可以看到这个数据&#xff0c;生产部的就…

SpringBoot整合FreeMarker生成word表格文件(使用FTL模板)

**一&#xff0c;什么是FreeMarker&#xff0c;FTL模板? ** FreeMarker 是一款 模板引擎&#xff1a; 即一种基于模板和要改变的数据&#xff0c; 并用来生成输出文本(HTML网页&#xff0c;电子邮件&#xff0c;配置文件&#xff0c;源代码等)的通用工具。 它不是面向最终用户…

chatgpt赋能python:Python虚拟环境

Python虚拟环境 Python是一种脚本语言&#xff0c;它被广泛应用于各种类型的开发项目中。在其应用中&#xff0c;Python常常需要运行在特定的环境下&#xff0c;而Python虚拟环境就是为此而设计。 什么是Python虚拟环境 Python虚拟环境是Python的一种开发环境&#xff0c;可…

堆排序+TopK问题——“数据结构与算法”

各位CSDN的uu们你们好呀&#xff0c;好久不见&#xff0c;停更了很长一段时间吧&#xff0c;最近小雅兰会开始慢慢更新起来的&#xff0c;下面&#xff0c;就进入小雅兰今天的分享的知识点吧&#xff0c;让我们一起进入堆的世界&#xff01;&#xff01;&#xff01; 堆排序——…

2023上半年软考系统分析师科目一整理-04

2023上半年软考系统分析师科目一整理-04 企业信息化 企业信息化 企业信息化工程是将( A )相结合&#xff0c;改善企业的经营、管理、产品开发和生产等各个环节&#xff0c;提高生产效率、产品质量和企业的创新能力&#xff0c;从而实现产品设计制造和企业管理的信息化、生产过…