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,一经查实,立即删除!

相关文章

代码随想录训练营第二十一天 669修建二叉搜索树 108将有序数组转换为二叉搜索树 538把二叉搜索树转换为累加树

第一题: 原题链接:669. 修剪二叉搜索树 - 力扣(LeetCode) 思路: 终止条件: 如果root本身为null的话直接返回null; 如果当前节点的val值小于low边界,说明当前这个节点是要删除的…

软件构造 | 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:这种系统只实现了内核功能,比较简单,在嵌入式开发中,某些情况下我们只需要多任务,而不需要文件…

网络构建和设计方法_2.网络技术遴选

网络遴选工作是通信系统设计中关键的一项工作,根据计划实施的网络建设要求,遴选工作通常分为局域网、广域网和路由协议的选择。 1.局域网技术遴选 1)生成树协议(Spanning Tree Protocol,STP) 在局域网构建…

前端项目结构介绍与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…

更正:VMWARE出现错误关闭Hyper-V会导致Docker Desktop报错

之前使用VMWARE时出现错误,当时在服务处将《HV主机服务》关闭,并使用命令 bcdedit /set hypervisorlaunchtype off 造成Docker Desktop无法使用 解决方法: 运行bcdedit /set hypervisorlaunchtype auto 注意这里最后不是on也不是start 重启…

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、页面边距的两…

conda安装管理配置

原文链接&#xff1a;conda管理配置 导言 安装卸载 卸载 卸载 docker sudo rm -r /opt/anaconda3 #conda安装位置安装 从镜像archive中下载sh脚本安装 bash ./software/Anaconda3-2024.02-1-Linux-x86_64.sh -b -p /opt/anaconda3 #conda安装位置管理 查看 conda --ver…

Docker Compose:简化多容器管理的利器

在现代的应用开发和部署过程中&#xff0c;Docker已经成为不可或缺的工具。它通过容器化技术&#xff0c;使得应用的部署变得更加轻松和高效。然而&#xff0c;当我们需要管理和运行多个容器时&#xff0c;单纯依赖Docker命令行工具可能会显得繁琐且复杂。这时&#xff0c;Dock…

js中定义类的方式:

在JavaScript中&#xff0c;有几种定义类的方式&#xff0c;但最常用的是使用ES6引入的class关键字。以下是使用class定义类的一个简单示例&#xff1a; class Person {// 构造函数&#xff0c;用于初始化对象的属性constructor(name, age) {this.name name;this.age age;}/…

CCS的安装步骤

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

数据库系统概论-第10章数据库恢复技术

10.1事务的基本概念 ①事务&#xff1a;用户宝义的一个数据库操作序列&#xff0c;是一个不可分割的工作单位。一个程序中包含多个事务。 事务通常是以BEGIN TRANSACTION开始&#xff0c;以COMMIT或ROLLBACK结束。COMMIT表示提交。ROLLBACK表示回滚&#xff0c;即在事务运行过…

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

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;维修较复杂且困难。我们简单总结了以下几点对于机床导轨…