Java中Collection的成员及其特点

Collection集合
    list集合系列
        ArrarList集合
            底层基于数组来实现
                查询速度快(根据索引查询数据)
                删除效率低(可能需要把后面很多的数据往后移)
                添加效率极低(添加时可能需要用到扩容和数据后移)
            利用无参构造器创建集合时会创建一个默认为0的数组,添加第一个元素之后,底层回创建一个新的长度为10的数组,,在存第十一个数据的时候会对数组进行扩容1.5倍。(当一个数组通过方法把另一个数组中全部元素加进去,则会创建一个相对应长度的数组)
            适用场景
                根据索引查询数据的同时数据量不是很大,并且需要存储重复元素,又需要频繁的根据索引来查找数据
        共有的遍历方法
            第三种循环(forEarch())
            第二种循环(迭代器循环())
            第一种循环(for()循环)
        LinkedList集合
            底层基于双链表来实现
                查询慢(无论是查询哪一个数据都是从头节点开始查询)
                但是对头节点和尾节点的增删改查是很快的(对首尾可以进行快速定位)
                增删快(在中间数据中添加或者删除一个数据的时候只需要更改头节点和尾节点,不需要移动数据)
            特有的方法:(对首尾有特定的方法)
                addFrist()
                addLast()
                getFrist()
                getLast()
                removeFrist()
                removeLast()
            应用场景:
                可以用来设计队列
                可以用来设计栈
                    进栈(push)
                    出栈(pop)
                增删首尾数据的情况较多
    有序可重复有索引
    Set集合系列
        HashSet集合
            基于哈希表实现(数组+链表+红黑树)
                1:第一次添加一个数据的时候,会创建一个默认长度为16的数组,默认加载因子为0.75,数组名为table
                2:使用元素的哈希值对数组长度求余计算出应存入的位置
                3:判断当前位置是否为null,如果是null直接存入,如果不是,则表示铀元素,调用equals方法来比较是否相等,相等就不存,不等才存
            适用场景
                没有重复元素需要存储,只希望增删改查都快
        LinkedHashSet集合
            与set集合不一样的地方在于它可以有序
            基于哈希表实现(数组+链表+红黑树)但是每个元素都额外多了一个双链表机制来记入他前后元素的位置
            适用场景
                如果希望记住添加元素的顺序,也没有重复元素需要存储,且希望增删改查都快
        TreeSet集合
            与set集合不一样的地方在于它可以排序
                对于数值类型:Integer,Double,默认按照数值本身大小进行升序排序
                对于字符串字符类型:默认按照首字符的编号进行升序排序
                对于自定义的类型不能直接进行排序
                    方法一:让自定义的类实现Comparable接口,重写里面的compareTo方法来指定比较规则
                    方法二:通过TreeSet集合有参数构造器,可以设置Compartor对象(比较器对象,用来指定比较规则)
            底层基于红黑树来实现(不会存相同的数值)
            适用场景
                要对元素进行排序,没有重复元素需要存储,且希望增删改查都快
    无序不重复无索引
    常用的API
        add()
            增加元素
        clear()
            清除所有元素
        remove()
            删除指定元素
        contains()
            判断当前集合中是否包含指定的对象
        isEmpty()
            判断当前集合是否为空
        size()
            返回集合中元素个数
        toArray()
            吧集合中的元素存储到数组中
        c.addAll(x)
            把x集合中的全部数据倒入c集合中去
    获取迭代器的方法
        iterator()
            hasNext()
            解决并发修改异常问题的方法:使用迭代器自带的remove()
            使用增强for表达式或者Lambda表达式来遍历集合并且删除数据时,会产生集合的并发修改异常错误,且无法避免
    可变参数(参数类型...名称)
        好处和特点
            可以传一个或者多个参数给这个方法,也可以不传参数给方法。这样可以灵活的接收数据
        注意事项
            一:传入的可变参数只能有一个
            二:可变参数必须放在形参列表的最后面
            三:可变参数在方法中实际是一个数组
    Collections集合工具类的静态方法
        addAll(集合,可变参数) 
            批量添加元素
        shuffle(集合) 
            打乱list集合中的顺序
        sort(集合)
            对list集合中的元素进行升序排序
        sort(自定义集合,比较规则)
            使用Comparable或者Comparator来定义集合中的排序方式

==============================思维导图==================================

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

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

相关文章

软件构造 | Abstract Data Type (ADT)

软件构造 | Abstract Data Type (ADT) ​ 抽象数据类型与表示独立性:如何设计良好的抽象数据结构,通过封 装来避免客户端获取数据的内部表示(即“表示泄露”),避免潜在 的bug——在client和implementer之间建立“防火…

鸿蒙开发Ability Kit(程序框架服务):【FA模型切换Stage模型指导】 配置文件差异

配置文件的差异 FA模型应用在[config.json文件]中描述应用的基本信息,一个应用工程中可以创建多个Module,每个Module中都有一份config.json文件。config.json由app、deviceConfig和module三部分组成,app标签用于配置应用级别的属性&#xff…

裸机与操做系统区别(RTOS)

声明:该系列笔记是参考韦东山老师的视频,链接放在最后!!! rtos:这种系统只实现了内核功能,比较简单,在嵌入式开发中,某些情况下我们只需要多任务,而不需要文件…

前端项目结构介绍与Vue-cli(脚手架)环境搭建

传统的前端项目结构 一个项目中有许多html文件 每一个html文件都是相互独立的 如果需要在页面中导入一些外部依赖的组件(vue.js,elementUI),就需要在每一个html文件中引用都导入,十分的麻烦 而且这些外部组件都需要在其官网中自行下载,也增加了导入的繁琐程度 当今的前端项…

PMBOK® 第六版 实施整体变更控制

目录 读后感—PMBOK第六版 目录 对于变化的态度,个人引用两句加以阐释,即“流水不腐,户枢不蠹”与“不以规矩,不能成方圆”。这看似相互矛盾,实则仿若两条腿总是一前一后地行进。有一个典型的例子,“自由美…

基于IM948(Low-cost IMU+蓝牙)模块的高精度PDR(Pedestrian Dead Reckoning)定位系统 — 可以提供模块和配套代码

一、背景与意义 行人PDR定位系统中的PDR(Pedestrian Dead Reckoning,即行人航位推算)背景意义在于其提供了一种在GPS信号不可用或不可靠的环境下,对行人进行精确定位和导航的解决方案。以下是关于PDR背景意义的详细描述&#xff1…

Python代码打包成exe应用

目录 一、前期准备 二、Pyinstaller打包步骤 Pyinstaller参数详解 三、测试 Spec 文件相关命令 一、前期准备 (1)首先,我们需要确保你的代码可以在本地电脑上的pycharm正常运行成功。 (2)我们要先安装Pyinstalle…

AI智能体 | 扣子Coze 工作流中如何嵌入代码,看这一篇就够了

Coze的工作流中除了能嵌入大模型,插件,图像流,其他工作流外,还能嵌入代码。嵌入代码的好处是对一些复杂的返回结果进行二次处理。 Coze的代码支持js和python两种语言。这次用python来做演示介绍 在节点中选择代码 弹出对话框如下…

python-docx 设置页面边距、页眉页脚高度

本文目录 前言一、docx 页面边距在哪里二、对 <w:pgMar> 的详细说明1、上边距的说明2、右边距的说明3、下边距的说明4、左边距的说明5、页眉高度的说明6、页脚高度的说明三、设置 docx 页边距、页眉页脚高度1、完整代码2、代码执行效果图四、补充一些内容1、页面边距的两…

CCS的安装步骤

CCS的安装步骤 安装之前有几件重要的事情要做&#xff1a; 首先肯定是要下载安装包啦&#xff01;点击此处是跳到官网下载地址安装包不能处的路径中不能包含中文关闭病毒防护和防火墙&#xff0c;以及其他杀毒软件最后是在重启后进行安装 主要的步骤如下&#xff1a; 找到安…

电脑高手推荐:三款超实用软件,让你的电脑如虎添翼!

7Zip 7-Zip是一款免费且开源的文件压缩工具&#xff0c;支持多种文件格式&#xff0c;包括其自带的7z格式、ZIP、GZIP、BZIP2和TAR等。该软件由Igor Pavlov于1999年开发&#xff0c;具有高压缩比的特点。7-Zip不仅可以在Windows操作系统上使用&#xff0c;还可以在Unix-like的操…

【MySQL】数据库事务详解

文章目录 前言1. 事务的定义2. 事务的四个特性2.1 原子性2.2 一致性2.3 隔离性2.4 持久性 3. 事务的并发问题3.1 脏读3.2 不可重复读3.3 幻读3.4 更新丢失 4. 事务的隔离级别5. 事务的使用结语 前言 假设我们现在需要操作数据库进行转账&#xff0c;A 给 B 转账 100 块钱&…

高效修复机床导轨磨损,保障加工精度!

机床导轨是支承和引导运动构件沿着一定轨迹运动的传动装置&#xff0c;在机器设备中是个十分重要的部件&#xff0c;在机床中是常见的部件。机床的加工精度与导轨精度有直接的联系&#xff0c;且导轨一旦损坏&#xff0c;维修较复杂且困难。我们简单总结了以下几点对于机床导轨…

【会议征稿,IEEE出版】第三届机器人、人工智能与智能控制国际会议(RAIIC 2024,7月5-7)

第三届机器人、人工智能与智能控制国际会议&#xff08;RAIIC 2024&#xff09;将于2024年7月5-7日中国绵阳举行。 RAIIC 2024是汇聚业界和学术界的顶级论坛&#xff0c;会议将邀请国内外著名专家就以传播机器人、人工智能与智能控制领域的技术进步、研究成果和应用做专题报告…

网站推广如何做?这七个方法要知道

在出海独立站商家中&#xff0c;推广是必不可少的环节。在你完成网站的搭建&#xff0c;产品的上架&#xff0c;以及网站的运营和优化后&#xff0c;你就可以开始着手推广你的网站了。你的网站是承载你的品牌和产品的主要平台&#xff0c;因此&#xff0c;你需要根据你的品牌和…

OZON跨境卖家爆款产品有哪些

OZON跨境卖家爆款产品有哪些&#xff1f;国内的Ozon跨境卖家做这几个品&#xff0c;不爆都难&#xff01; Top1 太阳镜 Очки солнцезащитные 商品id&#xff1a;1556874194 月销量&#xff1a;1095 OZON跨境卖家爆款产品工具&#xff1a;D。DDqbt。COm/…

2024三掌柜赠书活动第二十五期:Rust 游戏开发实战

目录 目录 前言 Rust语言概念 关于《Rust 游戏开发实战》 Rust系统编程的核心点 Rust开发的关键技术和工具 内容简介 作者简介 书中前言/序言 内容介绍 《Rust 游戏开发实战》全书速览 图书目录 结束语 前言 技术圈最近的编程语言新秀当属Rust莫属&#xff0c;Rus…

Ubuntu下包管理命令dpkg安装deb软件包的示例与汇总

一、选定待安装的deb软件包&#xff1a; 二、dpkg安装chrome浏览器的示例&#xff1a; 三、汇总dpkg包管理命令格式&#xff1a;

高三学生的倒计时 给高考一个倒计时 让学习更有计划的进行

高三学生的压力是很大的&#xff0c;时间也是很紧迫&#xff0c;仅仅一年的时间&#xff0c;许多人都觉得不够用&#xff0c;为了让学子们更有时间紧迫感&#xff0c;更清晰的掌握时间&#xff0c;我们需要一个准确提醒的倒计时效果。 把这个倒计时放到班级电脑上&#xff0c;是…

【人工智能】—基于线性回归和多项式回归模型预测人均收入的研究

引言 随着人工智能技术的飞速发展&#xff0c;机器学习已成为数据分析和预测领域的重要工具。在众多机器学习算法中&#xff0c;线性回归和多项式回归因其模型简单、易于理解和实现而受到广泛应用。本文旨在探讨如何利用这两种回归模型对人均收入进行预测。线性回归模型以其简…