JAVA集合框架综述

Java集合框架图析(Collection-List) Java集合框架图析 ##前言 Java 集合,也称作容器,主要是由两大接口 (Interface) 派生出来的:Collection 和 Map,顾名思义,容器就是用来存放数据的。那么这两大接口的不同之处在于: Collection 存放单一元素; Map 存放 key-value 键值对。 集合框架 Java集合里使用接口来定义功能,是一套完善的继承体系。Iterator是所有集合的总接口,其他所有接口都继承于它,该接口定义了集合的遍历操作,Collection接口继承于Iterator,是集合 阅读详情

一、集合框架图

简化图:

说明:对于以上的框架图有如下几点说明

1.所有集合类都位于java.util包下。Java的集合类主要由两个接口派生而出:Collection和Map,Collection和Map是Java集合框架的根接口,这两个接口又包含了一些子接口或实现类。
2. 集合接口:6个接口(短虚线表示),表示不同集合类型,是集合框架的基础。
3. 抽象类:5个抽象类(长虚线表示),对集合接口的部分实现。可扩展为自定义集合类。
4. 实现类:8个实现类(实线表示),对接口的具体实现。
5. Collection 接口是一组允许重复的对象。
6. Set 接口继承 Collection,集合元素不重复。
7. List 接口继承 Collection,允许重复,维护元素插入顺序。
8. Map接口是键-值对象,与Collection接口没有什么关系。
9.Set、List和Map可以看做集合的三大类:
List集合是有序集合,集合中的元素可以重复,访问集合中的元素可以根据元素的索引来访问。
Set集合是无序集合,集合中的元素不可以重复,访问集合中的元素只能根据元素本身来访问(也是集合里元素不允许重复的原因)。
Map集合中保存Key-value对形式的元素,访问时只能根据每项元素的key来访问其value。

二、总体分析

大致说明:
看上面的框架图,先抓住它的主干,即Collection和Map。

1、Collection是一个接口,是高度抽象出来的集合,它包含了集合的基本操作和属性。Collection包含了List和Set两大分支。
(1)List是一个有序的队列,每一个元素都有它的索引。第一个元素的索引值是0。List的实现类有LinkedList, ArrayList, Vector, Stack。

(2)Set是一个不允许有重复元素的集合。Set的实现类有HastSet和TreeSet。HashSet依赖于HashMap,它实际上是通过HashMap实现的;TreeSet依赖于TreeMap,它实际上是通过TreeMap实现的。

2、Map是一个映射接口,即key-value键值对。Map中的每一个元素包含“一个key”和“key对应的value”。AbstractMap是个抽象类,它实现了Map接口中的大部分API。而HashMap,TreeMap,WeakHashMap都是继承于AbstractMap。Hashtable虽然继承于Dictionary,但它实现了Map接口。

3、接下来,再看Iterator。它是遍历集合的工具,即我们通常通过Iterator迭代器来遍历集合。我们说Collection依赖于Iterator,是因为Collection的实现类都要实现iterator()函数,返回一个Iterator对象。ListIterator是专门为遍历List而存在的。

4、再看Enumeration,它是JDK 1.0引入的抽象类。作用和Iterator一样,也是遍历集合;但是Enumeration的功能要比Iterator少。在上面的框图中,Enumeration只能在Hashtable, Vector, Stack中使用。

5、最后,看Arrays和Collections。它们是操作数组、集合的两个工具类。

---|Collection: 单列集合

                            ---|List:存储有顺序(存入和取出的顺序相同), 可重复

                                     ---|ArrayList:         数组实现, 查找快, 增删慢

                                               由于是数组实现, 在增和删的时候会牵扯到数组

增容, 以及拷贝元素. 所以慢。数组是可以直接

按索引查找, 所以查找时较快

                                     ---|LinkedList:       链表实现, 增删快, 查找慢

                                               由于链表实现, 增加时只要让前一个元素记住自

己就可以, 删除时让前一个元素记住后一个元

素, 后一个元素记住前一个元素. 这样的增删效

率较高但查询时需要一个一个的遍历, 所以效率

较低

                                     ---|Vector:        和ArrayList原理相同, ArrayList线程不安全,效率高,Vector线程安全, 效率略低

                                     和ArrayList实现方式相同, 但考虑了线程安全问

题, 所以效率略低

                            ---|Set: 无存储顺序(存入和取出的顺序不一定相同)

                                     ---|HashSet  基于哈希表方式,不可重复

                                     ---|TreeSet  底层二叉树结构

                                     ---|LinkedHashSet

---|Map: 键值对   key键 value值对方式存储

                   ---|HashMap底层为哈希表,使用键值对存储

                   ---|TreeMap底层红黑树结构

                   ---|HashTable底层为哈希表,使用键值对存储

                   ---|LinkedHashMap

---|Collection: 单列集合

                            ---|List:存储有顺序(存入和取出的顺序相同), 可重复

                                     ---|ArrayList:         数组实现, 查找快, 增删慢

                                               由于是数组实现, 在增和删的时候会牵扯到数组

增容, 以及拷贝元素. 所以慢。数组是可以直接

按索引查找, 所以查找时较快

                                     ---|LinkedList:       链表实现, 增删快, 查找慢

                                               由于链表实现, 增加时只要让前一个元素记住自

己就可以, 删除时让前一个元素记住后一个元

素, 后一个元素记住前一个元素. 这样的增删效

率较高但查询时需要一个一个的遍历, 所以效率

较低

                                     ---|Vector:        和ArrayList原理相同, ArrayList线程不安全,效率高,Vector线程安全, 效率略低

                                     和ArrayList实现方式相同, 但考虑了线程安全问

题, 所以效率略低

                            ---|Set: 无存储顺序(存入和取出的顺序不一定相同)

                                     ---|HashSet  基于哈希表方式,不可重复

                                     ---|TreeSet  底层二叉树结构

                                     ---|LinkedHashSet

---|Map: 键值对   key键 value值对方式存储

                   ---|HashMap底层为哈希表,使用键值对存储

                   ---|TreeMap底层红黑树结构

                   ---|HashTable底层为哈希表,使用键值对存储

                   ---|LinkedHashMap

使用 Python 爬取 Wikipedia 数据:抓取百科条目及其内容 维基百科的 API 提供了一些方便的接口,通过这些接口,我们可以轻松获取到维基百科的条目、类别、图片和其他相关信息。维基百科的 API 主要是基于 HTTP 请求的,通过向特定的 URL 发送 GET 请求来获取信息。:获取指定条目的内容。在本博客中,我们介绍了如何使用 Python 爬取维基百科的条目数据。通过使用 Wikipedia API 和网页抓取技术,我们能够高效地获取条目内容,并将其存储和分析。希望本篇教程能帮助你深入理解如何抓取和处理维基百科的数据。 阅读详情

相关推荐

别再手动拆解字节了!用博图这个功能指令,5分钟搞定ARRAY转BOOL数组

本文详细介绍了西门子博图中`ARRAY_TO_BOOL`功能指令的高效应用,帮助工程师快速实现ARRAY到BOOL数组的转换。通过实战案例和参数配置指南,展示了如何5分钟内完成传统方法需半小时的任务,大幅提升PLC编程效率,特别适用于通信报文解析和设备状态监控。

weixin_42653691的博客 265

Java核心知识体系6:集合框架详解

HashSet 是一个没有重复元素的集合。需要注意的是,虽然Set中元素没有顺序性,但是元素在set中的位置是由该元素的HashCode决定的,所以具体的位置其实是固定的。以哈希表数据结构实现,查找对象时通过哈希函数计算其位置,它是为快速查询而设计的,其内部定义了一个hash表数组(Entry[] table),元素会通过哈希转换函数将元素的哈希地址转换成数组中存放的索引,如果有冲突,则使用散列链表的形式将所有相同哈希地址的元素串起来,可能通过查看HashMap.Entry的源码它是一个单链表结构。

Reische的博客 1211

3分钟接入满血版DeepSeek-R1:字节火山引擎手把手教程!免费50万tokens!

3分钟接入满血版DeepSeek-R1:字节火山引擎手把手教程!免费50万tokens!

hunteritself的博客 2万+

一文看懂java集合(图文详细)

一、Collection 接口的接口 对象的集合(单列集合)List 接口:元素按进入先后有序保存,有序,可重复LinkedList 接口实现类, 链表, 插入删除, 没有同步, 线程不安全ArrayList 接口实现类, 数组, 随机访问, 没有同步, 线程不安全Vector 接口实现类 数组, 同步,线程安全Set 接口: 仅接收一次,无序,不可重复,并做内部排序HashSet 使用hash表(数组)存储元素LinkedHashSet 链表维护元素的插入次序。

丨康有为丨的博客 3538

Windows Server 2016上,手把手教你搭建MDT 8456自动化部署环境(含ADK 2004与WDS配置)

本文详细指导在Windows Server 2016上搭建MDT 8456自动化部署环境,涵盖ADK 2004与WDS配置全流程。通过标准化操作系统部署、应用程序静默安装和驱动程序注入,实现企业级自动化部署解决方案,显著提升IT运维效率。特别针对兼容性问题和权限陷阱提供实战解决方案。

weixin_29876033的博客 388

基于 SpringAI 整合 DeepSeek 模型实现 AI 聊天对话

很多云平台都提供了一键部署大模型的功能,这里不再赘述(阿里云百炼平台、火山方舟-火山引擎等)Ollama。

📜一个热爱探索的人 1280

Java集合框架的理解

整理下实际开发中,经常用到java的集合框架

qq_36804678的博客 1076

Langchain与Milvus集成中的pymilvus.exceptions.MilvusException: channel not found错误解析

本文深入解析了在Langchain与Milvus集成时常见的pymilvus.exceptions.MilvusException: channel not found错误。该错误通常由客户端配置错误、网络问题、服务端状态异常或版本不兼容导致。文章提供了从基础连通性测试到高级网络排查的完整故障排除指南,并针对本地Docker、远程服务器及Kubernetes等典型部署场景给出了具体解决方案,帮助开发者快速定位并修复这一连接层问题。

weixin_29229989的博客 217

超全Java集合框架讲解(建议收藏)

是一个实现 Set 的一个抽象类,定义在这里可以将所有具体 Set 集合的相同行为在这里实现,避免子类包含大量的重复代码所有的 Set 也应该要有相同的hashCode()和equals()方法,所以使用抽象类把该方法重写后,子类无需关心这两个方法。// 判断两个 set 是否相等if (o == this) { // 集合本身(o instanceof Set)) { // 集合不是 set} else {// 比较两个集合的元素是否全部相同// 计算所有元素的 hashcode 总和。

白话机器学习 2621

Mac 环境配置jdk、Maven

3、终端打开配置jdk时候建好的脚本文件: open -e .bash_profile。4、查看maven是否安装成功和系统能不能识别maven/mvn命令:⬇️。输入⬇️并保存: 其中第一行JAVA_HOME替换为自己下的jdk路径。,安装编译好的二进制版本,具体安装zip还是tar.gz我看的。5、查看jdk是否安装成功和系统能不能识别java命令:⬇️。至此,我的Mac系统的环境配置jdk、Maven完成!然后就发现我的maven命令还是没作用,不识别,下载后直接安装即可,很快,点几下就OK了。

weixin_42416791的博客 4412

手把手教你学 Simulink (1.3)--Simulink 的模块库及其模块介绍

Simulink 提供了丰富的模块库,涵盖了从基本的信号生成和处理到复杂的数学运算和系统建模的各种功能。通过熟悉这些模块库及其模块,你可以更高效地构建和仿真动态系统。

MHD0815的博客 5153

Java 集合框架综述,值得收藏

Java 集合框架综述,值得收藏

qq_41490913的博客 75

【NIPS 2022】时序精选论文07|Non-stationary Transformers: 引入非平稳性信息的平稳化序列预测模型(代码解读附源码)

整体代码框架基本上与传统 Transformer 类似,基本上只有在内嵌的注意力机制模块有区别,因此这里只对关键部分进行讲解,代码整体框架可参考 Transformer。非平稳时序很难预测,尤其对模型泛化性影响很大,试想下推理阶段的数据分布变了,模型很难适应这种变化。,比如很早以前的差分就是一种平稳化操作。序列平稳化能增强数据的可预测性,但这时也会带来一个问题,叫。,通过MLP层进行定义,使得参数可学习,以便于更好的融合到注意力网络中。代码中整体注意力的计算方式与原生Transformer类似,

ViolenceTemper的博客 1495

Java 集合框架综述,这篇让你吃透!

Java 集合框架综述,这篇让你吃透!

qq_41490913的博客 137

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Java 集合框架综述

Java 集合框架综述

私信可回答各种问题~ 1137

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

java集合框架综述

目录 一、集合框架图 二、总体分析 三、Collection接口 1.List接口 2.Set接口 四、Map接口 五、Iterator 与 ListIterator详解 1.Iterator 2.ListIterator 六、异同点 1.ArrayList和LinkedList 2.HashTable与HashMap 3.HashMap、Hashtable、LinkedHashMap和TreeMap比较 4.HashSet、LinkedHashSet、TreeSet比较 5、

灵熙云工作室 529

计算机控制技术及应用

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

Java集合框架综述

最近被陆陆续续问了几遍HashMap的实现,回答的不好,打算复习复习JDK中的集合框架,并尝试分析其源码,这么做一方面是这些类非常实用,掌握其实现能更好的优化我们的程序;另一方面是学习借鉴JDK是如何实现了这么一套优雅高效的类库,提升编程能力。 在介绍具体适合类之前,本篇文章对Java中的集合框架做一个大致描述,从一个高的角度俯视这个框架,了解了这个框架的一些理念与约定,会大大帮助后面...

dengyiyu5280的博客 91

Java集合框架综述,这篇让你吃透!

推荐阅读:阿里P8架构师谈:工作1-5年的Java工程师,怎样提高核心竞争力 阿里架构师直言:“没有实战都是纸上谈兵”!Redis实战PDF分享 奋发图强半年多,终于四面阿里如愿拿到心仪offer定级P7 一、集合框架图 简化图: 说明:对于以上的框架图有如下几点说明 1、所有集合类都位于java.util包下。Java的集合类主要由两个接口派生而出:Collection和Map,Collection和Map是Jav...

文章中资料均可获取,有需要请添加yunduoa2019即可 711

一篇吃透,Java集合框架综述

一、集合框架图 简化图: 说明:对于以上的框架图有如下几点说明 1、所有集合类都位于java.util包下。Java的集合类主要由两个接口派生而出:Collection和Map,Collection和Map是Java集合框架的根接口,这两个接口又包含了一些子接口或实现类。 2、集合接口:6个接口(短虚线表示),表示不同集合类型,是集合框架的基础。 3、抽象类:5个抽象类(长虚线表示),对集合接口的部分实现。可扩展为自定义集合类。 4、实现类:8个实现类(实线表示),对接口的具体实现...

vincent 7466
上一篇: 腾讯云、阿里云双社区认证专家是如何理解微服务架构的
下一篇: 面试总结:二面蚂蚁挂掉后,呕心沥血三个月,三面网易终拿offer
Java斗帝之路
博客等级 码龄7年 2392粉丝 687原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值