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来定义集合中的排序方式

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CesiumJS【Basic】- #016 多边形面渲染“花了”的问题

文章目录 多边形面渲染“花了”的问题1 目标2 问题代码3 修正后代码4 总结多边形面渲染“花了”的问题 1 目标 解决多边形的面“花了”的问题 2 问题代码 使用Cesium.PerInstanceColorAppearance渲染后出现色斑 import * as Cesium from "cesium";const viewer …

文化财经wh6boll带macd多空转折点提示指标公式源码

文化财经wh6boll带macd多空转折点提示指标公式源码: DIFF:EMA(CLOSE,12) - EMA(CLOSE,26); DEA:EMA(DIFF,9); MACD:2*(DIFF-DEA); MID:MA(CLOSE,26);//求N个周期的收盘价均线,称为布林通道中轨 TMP2:STD(CLOSE,26);//求M个周期内的收盘价的标准差 …

惊天大瓜姬圈天莱女明星出轨风波

#惊天大瓜!姬圈天菜女明星出轨风波#近日,娱乐圈掀起了一场前所未有的风暴!狗仔队放出重磅消息,直指某位姬圈天菜级别的女明星深陷出轨泥潭。消息一出,引发了网友们的热议和猜测,究竟这位神秘的女明星是谁&a…

第N8周:seq2seq翻译实战-Pytorch复现

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 | 接辅导、项目定制 一、前期准备 from __future__ import unicode_literals, print_function, division from io import open import unicodedata import s…

DataGrip 2024 po for Mac 数据库管理工具解

Mac分享吧 文章目录 效果一、下载软件二、开始安装1、双击运行软件(适合自己的M芯片版或Intel芯片版),将其从左侧拖入右侧文件夹中,等待安装完毕2、应用程序显示软件图标,表示安装成功3、打开访达,点击【文…

怎么实现微信支付?

微信小程序中微信支付(前端流程) 微信支付前准备工作 微信公众平台绑定商户号 微信支付平台配置好后端信息支付前要有用户的openid 1. 客户端点击支付按钮 在用户点击支付按钮时,触发支付流程。 // 绑定支付按钮点击事件 function onPayB…

前端 CSS 经典:图层放大的 hover 效果

效果 思路 设置 3 层元素&#xff0c;最上层元素使用 clip-path 裁剪成圆&#xff0c;hover 改变圆大小&#xff0c;添加过渡效果。 实现代码 <!DOCTYPE html> <html lang"en"><head><meta charset"utf-8" /><meta http-eq…

基于matlab的K-means聚类图像分割

1 原理 K-means聚类算法在图像分割中的应用是基于一种无监督的学习方法&#xff0c;它将图像中的像素点或特征区域划分为K个不同的簇或类别。以下是K-means聚类算法用于图像分割的原理&#xff0c;包括步骤和公式&#xff1a; 1.1 原理概述 选择簇的数量(K)&#xff1a; 首先…

Android 多媒体开发——Media3与MediaSession最全使用指南

一、Media3库简介 1.1 Media3是什么&#xff1f; 官方释义&#xff1a; Jetpack Media3 is the new home for media libraries that enables Android apps to display rich audio and visual experiences. Media3 offers a simple architecture with powerful customization,…

为什么部署数字人系统源码一定要找源头工厂?

随着人工智能技术的发展成熟&#xff0c;数字人的应用场景被不断拓展&#xff0c;从而让更多人看到了数字人所蕴含的前景和潜力。于是&#xff0c;越来越多的创业者开始找数字人源头工厂进行数字人源码部署&#xff0c;以打造自己的数字人系统。许多骗子也因此看到了可乘之机&a…

SK Hynix 3D DRAM良率突破56.1%,开启存储新时代

根据韩国财经媒体Business Korea独家报道&#xff1a;在刚刚结束的VLSI 2024国际研讨会上&#xff0c;韩国半导体巨头SK Hynix公布了一项振奋人心的进展&#xff1a;其五层堆叠3D DRAM的制造良率已达到56.1%。此成果标志着3D DRAM技术在商业化道路上迈出了坚实的一步&#xff0…

【python】eval函数

1.eval函数的语法及用法 &#xff08;1&#xff09;语法&#xff1a;eval(expression) 参数说明&#xff1a; expression&#xff1a;必须为字符串表达式&#xff0c;可为算法&#xff0c;也可为input函数等。 说明&#xff1a;表达式必需是字符串&#xff0c;否则会报错&a…

【Text2SQL 论文】MCS-SQL:利用多样 prompts + 多项选择来做 Text2SQL

论文&#xff1a;MCS-SQL: Leveraging Multiple Prompts and Multiple-Choice Selection For Text-to-SQL Generation ⭐⭐⭐ arXiv:2405.07467 一、论文速读 已有研究指出&#xff0c;在使用 LLM 使用 ICL 时&#xff0c;ICL 的 few-shot exemplars 的内容、呈现顺序都会敏感…

大自然高清风景视频无水印素材在哪下载?下载视频素材网分享

在视频创作领域&#xff0c;一段高清的风景视频可以极大地提升你的作品质感。无论是作为背景、过渡片段还是主要内容&#xff0c;优质的风景视频素材都是必不可少的。然而&#xff0c;寻找既高清又无水印的风景视频素材并非易事。为了帮助大家轻松获取这类素材&#xff0c;我整…

计算机缺失d3dx9_43.dll的多种解决方法,哪种更推荐使用

我在使用计算机时遇到了一个问题&#xff0c;系统提示我丢失了d3dx9_43.dll文件。丢失d3dx9_43.dll文件通常是由于DirectX组件未正确安装或损坏所致&#xff0c;这直接影响到依赖于DirectX的游戏和应用的运行。经过一番搜索和尝试&#xff0c;我找到了多种修复这个问题的方法&a…

突然断供中国!OpenAI变CloseAI,用户连夜搬家

ChatGPT狂飙160天&#xff0c;世界已经不是之前的样子。 更多资源欢迎关注 OpenAI&#xff0c;这把变成CloseAI了。 6月25日早上&#xff0c;有中国开发者表示收到了来自OpenAI的“警告信”&#xff1a;将采取额外措施停止其不支持的地区的API&#xff08;应用接口&#xff09…

typescript学习回顾(二)

今天来分享一下ts的基础&#xff0c;如何使用ts&#xff0c;以及ts具体的作用&#xff0c;如何去约束我们开发中常见的一些数据的&#xff0c;最后做一个小练习来巩固对ts基础的掌握程度。 类型约束 如何加类型约束呢 变量、函数的参数、函数的返回值位置加上:类型 比如 //约…

微信小程序-自定义组件checkbox

一.自定义Coponent组件 公共组件&#xff1a;将页面内公共的模块抽取为自定义组件&#xff0c;在不同页面复用。 页面组件&#xff1a;将复杂页面进行拆分&#xff0c;降低耦合度&#xff0c;有利于代码维护。 可以新建文件夹component放组件&#xff1a; 组件名为custom-che…

msvcr110.dll丢失的解决方法,亲测有效的几种解决方法

最近&#xff0c;我在启动一个程序时&#xff0c;系统突然弹出一个错误提示&#xff0c;告诉我电脑缺失了一个名为msvcr110.dll的文件。这让我感到非常困惑&#xff0c;因为我之前从未遇到过这样的问题。经过一番搜索和尝试&#xff0c;我总结了5种靠谱的解决方法。下面分享给大…

1.k8s:架构,组件,基础概念

目录 一、k8s了解 1.什么是k8s 2.为什么要k8s &#xff08;1&#xff09;部署方式演变 &#xff08;2&#xff09;k8s作用 &#xff08;3&#xff09;Mesos&#xff0c;Swarm&#xff0c;K8S三大平台对比 二、k8s架构、组件 1.k8s架构 2.k8s基础组件 3.k8s附加组件 …