Java集合

【Java 集合】 集合概述Java 集合概览Java 集合,也叫作容器,主要是由两大接口派生而来:一个是Collection接口,主要用于存放单一元素;另一个是Map接口,主要用于存放键值对。对于CollectionListSetQueue。Java 集合框架如下图所示:Java 集合框架概览注:图中只列举了主要的继承派生关系,并没有列举所有关系。比方省略了等抽象类以及其他的一些辅助类,如想深入了解,可自行查看源码。说说 List, Set, Queue, Map 四者的区别?List。 阅读详情

Java集合类存放于java.util包中,主要分为三种:Set、List、Map。其中Collection是集合List和Set基本接口。(关系如下图)
在这里插入图片描述

List

List是有序的集合,List一共有三个实现类。分别是:ArrayList、Vector、LinkedList。

1、ArrayList(数组)
ArrayList 是最常用的 List 实现类,内部是通过数组实现的,它允许对元素进行快速随机访问。数组的缺点是每个元素之间不能有间隔,当数组大小不满足时需要增加存储能力,就要将已经有数组的数据复制到新的存储空间中。当从 ArrayList 的中间位置插入或者删除元素时,需要对数组进行复制、移动、代价比较高。因此,它适合随机查找和遍历,不适合插入和删除。

2、Vector(数组实现、线程同步)
Vector 与 ArrayList 一样,也是通过数组实现的,不同的是它支持线程的同步,即某一时刻只有一个线程能够写 Vector,避免多线程同时写而引起的不一致性,但实现同步需要很高的花费,因此,访问它比访问 ArrayList 慢。

3、LinkList(链表)
LinkedList 是用链表结构存储数据的,很==适合数据的动态插入和删除,随机访问和遍历速度比较慢。==另外,他还提供了 List 接口中没有定义的方法,专门用于操作表头和表尾元素,可以当作堆栈、队列和双向队列使用。
在这里插入图片描述

Set

Set是无序的集合,值不能重复。对象的相等性本质是对象 hashCode 值(java 是依据对象的内存地址计算出的此序号)判断的,如果想要让两个不同的对象视为相等的,就必须覆盖 Object 的 hashCode 方法和 equals 方法。Set一共有三个实现类。分别是:HashSet、TreeSet、LinkedHashSet。

1、HashSet(Hash 表)
HashSet 存储元素的顺序并不是按照存入时的顺序(和 List 显然不同) 而是按照哈希值来存的所以取数据也是按照哈希值取得。元素的哈希值是通过元素的hashcode 方法来获取的, HashSet 首先判断两个元素的哈希值,如果哈希值一样,接着会比较equals 方法 如果 equls 结果为 true ,HashSet 就视为同一个元素。如果 equals 为 false 就不是同一个元素。

2、TreeSet(二叉树)
TreeSet()是使用二叉树的原理对新 add()的对象按照指定的顺序排序(升序、降序),每增加一个对象都会进行排序,将对象插入的二叉树指定的位置。

Integer 和 String 对象都可以进行默认的 TreeSet 排序,而自定义类的对象是不可以的,自己定义的类必须实现 Comparable 接口,并且覆写相应的 compareTo()函数,才可以正常使用。

在覆写 compare()函数时,要返回相应的值才能使 TreeSet 按照一定的规则来排序

比较此对象与指定对象的顺序。如果该对象小于、等于或大于指定对象,则分别返回负整数、零或正整数。

3、LinkHashSet(HashSet+LinkedHashMap)
对于 LinkedHashSet 而言,它继承与 HashSet、又基于 LinkedHashMap 来实现的。LinkedHashSet 底层使用 LinkedHashMap 来保存所有元素,它继承与 HashSet,其所有的方法操作上又与 HashSet 相同,因此 LinkedHashSet 的实现上非常简单,只提供了四个构造方法,并通过传递一个标识参数,调用父类的构造器,底层构造一个LinkedHashMap 来实现,在相关操作上与父类 HashSet 的操作相同,直接调用父类 HashSet 的方法即可。

在这里插入图片描述

Map

Map 是一种键-值对(key-value)集合,Map 集合中的每一个元素都包含一个键对象和一个值对象。其中,键对象不允许重复,而值对象可以重复。Map接口主要也有三个实现类:HashMap、HashTable、TreeMap。

1、HashMap(数组+链表+红黑树)
HashMap 根据键的 hashCode 值存储数据,大多数情况下可以直接定位到它的值,因而具有很快的访问速度,但遍历顺序却是不确定的。 HashMap 最多只允许一条记录的键为 null,允许多条记录的值为 null。HashMap 非线程安全,即任一时刻可以有多个线程同时写 HashMap,可能会导致数据的不一致。如果需要满足线程安全,可以用 Collections 的 synchronizedMap 方法使HashMap 具有线程安全的能力,或者使用 ConcurrentHashMap。

2、HashTable(线程安全)
Hashtable 是遗留类,很多映射的常用功能与 HashMap 类似,不同的是它承自 Dictionary 类,并且是线程安全的,任一时间只有一个线程能写 Hashtable,并发性不如 ConcurrentHashMap,因为 ConcurrentHashMap 引入了分段锁。Hashtable 不建议在新代码中使用,不需要线程安全的场合可以用 HashMap 替换,需要线程安全的场合可以用 ConcurrentHashMap 替换。

3、TreeMap(可排序)
TreeMap 实现 SortedMap 接口,能够把它保存的记录根据键排序,默认是按键值的升序排序,也可以指定排序的比较器,当用 Iterator 遍历 TreeMap 时,得到的记录是排过序的。如果使用排序的映射,建议使用 TreeMap。

在使用 TreeMap 时,key 必须实现 Comparable 接口或者在构造 TreeMap 传入自定义的Comparator,否则会在运行时抛出 java.lang.ClassCastException 类型的异常。

在这里插入图片描述
总结下来一张图搞定

在这里插入图片描述

【Java集合 1】java集合有哪些 一、数组Array和集合的区别 1、数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型) 2、JAVA集合可以存储和操作数目不固定的一组数据。 3、若程序时不知道究竟需要多少对象,需要在空间不足时自动扩增容量,则需要使用容器类库,array不适用。  注:使用相应的toArray()和Arrays.asList()方法可以相互转换。 二、Java集合 集合类存放于Java.util包中。 集合类存放的都是对象的引用,而非对象本身,出于表达上的便利,我们称集合中的对象就是 阅读详情

相关推荐

使用单片机和电流互感器对非正弦周期电流有效值测定

使用单片机和电流互感器,利用一种高速采样的方法来进行有效值测定

月光绿叶滴水音乐 3944

java 有序(大小顺序)集合 详解

java 有序(大小顺序)集合 详解

T_Y_F_的博客 2152

【R】非参数秩和检验(Kruskal-Wallis H)与事后多重比较邓肯检验(Dunn‘s Test)及自动字母标记

非参数检验-Kruskal-Wallis H检验-多个独立样本秩和检验-事后两两比较-邓肯检验(Duncan's test)

captain_keating的博客 6534

java集合(笔记)

4种集合,分别为List、Queue、Set、Map。

lanjiangyu的博客 1305

数字IC后端PPA优化实战:Innovus中Timing一致性策略与Module Region布局技巧

本文深入探讨了数字IC后端设计中PPA优化的核心挑战,重点解析了Innovus与PrimeTime之间Timing不一致的根本原因。通过实战案例,详细介绍了在Innovus中设置Timing Margin、Derate以及RC Scale Factor等关键策略,以校准时序视图。同时,文章分享了利用Module Region进行物理布局规划的技巧,将关键模块约束在最优区域,并结合Group Path等进阶方法,有效提升时序收敛效率与PPA结果的可预测性。

f9g0h的博客 2686

EverOS:为AI智能体构建长期记忆系统的完整指南

长期记忆是AI智能体实现持续学习和自我演进的核心能力,它通过结构化存储和关联检索历史交互信息,使智能体能够跨越单次对话的局限。其技术原理通常涉及向量数据库、记忆提取算法和知识图谱等组件,用于对非结构化对话内容进行编码、组织和索引。这一能力的技术价值在于显著提升了智能体的个性化服务水平、任务完成连贯性以及从经验中学习的能力,是实现真正“智能”伙伴的关键。在应用场景上,长期记忆系统广泛应用于个性化聊天伴侣、持续学习的编程助手、游戏NPC角色塑造以及客户服务机器人等领域。本文以EverOS为例,深入解析了其提供的

weixin_28679635的博客 449

Java集合中哪些集合有序,哪些可重复

Java集合中哪些集合有序,哪些可重复

ludagea的博客 8091

轴承故障诊断领域的论文到底有多水

这个是最让人困惑的,就好像你说自己证明了某个方法更好,但是你却没有交代自己怎么做的,或者说你交代的过程有外行话或者逻辑上的缺陷,但是你就这么给出个结果完事了。由于自己没有足够大的学术交流圈子,为了尽量避免误判,我在原来13篇论文的基础上又读了18篇,这些论文至少都出自中文核心,有一些还有EI的title,事实上近几年能找到的文章也不算多,这些基本能说明问题了。当然,还有更多细节,比如说损失函数你得交代吧,模型超参数得介绍全吧,至少数据集是哪个工况下的得说吧,当你想复现这些论文,关注点在这些地方的时候。

weixin_50642818的博客 3051

Java集合类

HashSet实现了Set接口,并且不保证元素的迭代顺序,对其进行添加、删除元素等操作的时间复杂度是常量级的。//hasNext()用来判断是否还有下一个元素。//hasNext()用来判断是否还有下一个元素。//遍历方法2:采用加强for循环的方法。//遍历方法3:使用Iterator接口。//遍历方法2:采用加强for循环的方法。//遍历方法3:使用Iterator接口。//next()用来获得下一个元素。//next()用来获得下一个元素。//遍历结果是有序的(默认为升序)

qq_34158283的博客 449

【C++/嵌入式梳理】bootloader

【C++/嵌入式笔试面试八股】bootloader

Hi 1209

第五天 Labview数据记录(5.4 EXCEL文件读写)

Excel 文件读写在数据处理、自动化办公、数据分析等领域具有重要的意义。以下是 Excel 文件读写的主要应用场景和意义:1. 数据管理和整理;2. 自动化办公;3. 数据分析和可视化;4. 系统集成;5. 报表生成;6. 教育和培训;7. 实际应用场景。Excel 文件读写的意义在于提高数据处理的效率、减少人工操作、支持自动化办公、促进数据分析和可视化,以及实现系统之间的数据交互。无论是企业、组织还是个人,都可以通过 Excel 文件读写实现数据的高效管理和利用。

weixin_38637405的博客 1261

java集合体系——有序集合list

要学习有序集合list之前,首先我们要先知道java集合体系整体架构。集合体系被分为两大类,一是单列集合体系,二是双列集合体系,而今天要讲的有序集合list就属于Collection体系中最重要的一员,Collection体系结构如下图所示:list集合继承了Colleection的所有方法。

duehebfbf的博客 3320

嵌入式工程师成长之路(10)——项目举例

送给大学毕业后找不到奋斗方向的你(每周不定时更新)

云轩阁 5万+

Java集合 之 单列集合

java的单列集合,看这一篇就够了

qq_73698057的博客 3083

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Java【集合】

Java的特殊数据容器——集合

在下的博客 1877

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

java集合

一、集合的由来   通常,我们的程序需要根据程序运行时才知道创建多少个对象。但若非程序运行,程序开发阶段,我们根本不知道到底需要多少个数量的对象,甚至不知道它的准确类型。为了满足这些常规的编程需要,我们要求能在任何时候,任何地点创建任意数量的对象,而这些对象用什么来容纳呢?我们首先想到了数组,但是数组只能放统一类型的数据,而且其长度是固定的,那怎么办呢?集合便应运而生了! 为了对集合有个...

uyhbrr的博客 9058

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Java集合总结

Java中的集合(Collections)框架是一个非常重要的部分,它提供了一套设计良好的支持对一组对象进行操作的接口和类。这些接口和类位于java.util包中,使得我们可以以统一和灵活的方式处理对象集合。

2301_81579342的博客 1265

Java——集合

List 集合的特点:List 是有序集合,它维护元素的插入顺序。可以通过索引访问元素,索引从 0 开始,依次递增。与 Set 不同,List 允许存储重复的元素。方法名描述在此集合中的指定位置插入指定的元素删除指定索引处的元素,返回被删除的元素修改指定索引处的元素,返回被修改的元素返回指定索引处的元素indexOf 方法返回指定元素第一次出现在列表中的索引,如果列表不包含该元素,则返回 -1。

weixin_73551991的博客 1929

Java 集合

是工作中运用最多、最频繁的类,相比于数组(Array)来说,集合类的长度可变,更加方便开发。Java集合就像一个容器,可以存储任何类型的数据,也可以结合泛型来存储具体的类型对象。在程序运行时,Java集合可以动态地进行扩展,随着元素的增加而扩大。在Java中,集合类通常存在于java.util包中。Java集合主要由2大体系构成,分别是体系和体系,其中Collection和Map分别是2大体系中的顶层接口。Collection主要有三个子接口,分别为。

分享编程知识与技巧 致力于技术交流与学习 找我合作私聊 有偿解决计算机问题 1068

【Java集合一】集合概述

介绍了Java集合框架,包括其概述、主要数据结构(如List、Set、Queue、Map)以及相关实现类(如ArrayList、LinkedList、HashSet、HashMap等)。内容涵盖了集合框架的原理、特点、使用方法以及常见操作。

叉烧钵钵鸡的博客 1214

java中集合怎么定义_Java集合系列(一):集合的定义及分类

1. 集合的定义什么是集合呢?定义:集合是一个存放对象的引用的容器。在Java中,集合位于java.util包下。2. 集合和数组的区别(面试常问)提到容器,就会想起数组,那么集合和数组的区别是什么呢?(这里是重点,面试可能问的比较多)数组和集合都是Java中的容器数组的长度是固定的,集合的长度是可变的数组只能存储相同数据类型的数据,这里的数据类型可以是基本数据类型,也可以是引用类型集合可以存储不...

weixin_34952710的博客 4617

java集合中存放集合_集合与Java中的集合

java集合中存放集合 收集框架 Collection是Java Collection Framework的顶级接口。 List,Queue和Set是此框架的主要子接口。 集合接口是java.util.package的成员。 Collection接口中有几种方法可用于添加/删除元素,获取数组的大小,进行迭代或检查数组是否为空。 图片来源: javatpoint / collect...

专业的开发者“讨论” 2745

Java 集合详解

发现一个特点,上述所有的集合类,除了 map 系列的集合,即左边集合都实现了 Iterator 接口,这是一个用于遍历集合中元素的接口,主要hashNext(),next(),remove()三种方法。我们知道在一般的数组中,元素在数组中的索引位置是随机的,元素的取值和元素的位置之间不存在确定的关系,因此,在数组中查找特定的值时,需要把查找值和一系列的元素进行比较,此时的查询效率依赖于查找过程中比较的次数。但若非程序运行,程序开发阶段,我们根本不知道到底需要多少个数量的对象,甚至不知道它的准确类型。

2401_86940371的博客 1448

java 集合转json_Java集合 Json集合之间的转换

1. Java集合转换成Json集合关键类:JSONArray jsonArray = JSONArray.fromObject(Object obj);使用说明:将Java集合对象直接传进JSONArray.fromObject()中,得到一个JSONArray集合,再直接使用JSONArray的toString()方法,便可得到json集合示例代码:@Testpublic voidtestCr...

weixin_35851515的博客 3203
上一篇: Java返回统一结果集和异常处理
下一篇: SpringBoot+Thymeleaf实现国际化
与黑夜为伍
博客等级 码龄7年 19粉丝 80原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值