Java入门:22.集合的特点,List,Set和Map集合的使用
1 什么是集合
-
本质就是容器的封装,可以存储多个元素
-
数组一旦创建,长度就不能再改变了。
-
数组一旦创建,存储内容的类型不能改变。
-
数组可以存储基本类型,也可以存储引用类型。
-
数组可以通过length获得容量的大小,但无法获得存储内容的多少。
-
集合可以无限存储存储元素 (底层还是对数组做了扩容)
-
集合可以通过size方法获得存储元素的个数 int size
-
集合只能存储引用类型的数据
-
有多种集合,底层使用不同的存储结构存储元素,适合不同的存储场景
-
线性结构(数组)
-
链表结构
-
哈希(hash)结构 , 散列结构
-
二叉树结构
-
2 JDK提供的集合
-
jdk中提供了多种集合
-
基本上都实现了下面的4种接口(我们称为有4类集合)
-
实现Collection接口的集合
存储元素的特点是 无序(存取顺序) 可重复
常用的实现类:无
-
实现List接口的集合
存储元素的特点是 有序 可重复
常用的实现类:ArrayList , LinkedList , Vector
-
实现Set接口的集合
存储元素的特点是 无序 不可重复的(唯一的)
常用的实现类:HashSet , TreeSet
-
实现Map接口的集合
存储元素的特点是 键值存储, 一个元素由2部分组成
键的存储特点是 无序 不可重复的
值的存储特点是 无序 可重复的
常用的实现类:HashMap , TreeMap , Hashtable
-
注意 List 和 Set 都继承了 Collection
3 List集合的使用
-
所有的List集合,都实现了List接口
-
List的常用方法
List<String> list = new ArrayList<>(); list.add(E e) ; //添加一个元素(末尾) list.addAll(Collection es) ;//添加一组元素(末尾) , 将另一个集合中的元素都添加到当前list集合中 list.add(int index , E e) ; //插入一个元素 list.addAll(int index , Collection es) ;//插入一组元素 list.remove(Object o) ;//删除指定的元素 (底层使用equals判断相等) list.remove(int index) ;//删除指定位置的元素 list.removeAll(Collection es) ;//删除一组元素 list.size(); list.get(int index) ;//获取指定位置的元素 Iterator it = list.iterator(); //先获得迭代器对象,可以通过迭代器对象遍历容器中每一个元素//就是我们之前封装的Manager it.hashNext() ;//判断是否还有下一个元素 it.next() ;//获得下一个元素 Object[] os = list.toArray() ;//将容器中的元素装入数组并返回 String[] ss = list.toArray(new String[0]); //根据指定的类型,返回指定类型的数组 list.clear();//清空容器中的元素 list.isEmpty();//判断容器是否为空 (size == 0) list.contains(Object o) ;//判断容器中是否包含指定的元素(equals) list.indexOf(Object o) ;//找到容器中指定元素的位置(用来判断元素是否判断存在) list.sort(Comparator c) ;//根据指定的比较器,比较元素大小,并完成排序
4 增强for循环
-
jdk1.5之后,提供了一个循环新特性,叫增强for循环,foreach循环
-
增强for循环主要是简化集合和数组元素遍历的
-
增强for循环的本质就是使用Iterator迭代器,所有实现了Iterable接口的类都可以使用怎强for循环
List<String> list = new ArrayList<>();
for(String s : list){ ...
}
//等价于
Iterator<String> it = list.iterator();
for(;it.hashNext();){String s = it.next();....
}
String[] array = new String[5] ;
for(String s : array){....
}
//等价于
for(int i=2;i<array.length-2;i+=2){String s = array[i];....
}
5 Set集合的使用
-
所有的Set集合,都实现Set接口
-
Set集合的常用方法
Set<String> set = new TreeSet<>(); set.add(E e) ;//添加一个元素(位置不定) set.addAll(Collection es);//添加一组元素,将另一个集合中的元素存入当前集合中 set.remove(Object o) ;//删除指定的元素 (equals比较) set.removeAll(Collection es) ;//删除一组元素 set.size(); set.clear() ; set.isEmpty(); set.contains(Object o) ; Iterator it = set.iterator(); //获得迭代器对象,进而遍历集合中的所有元素 it.hashNext(); it.next();
6 Map集合的使用
所有的Map集合,都实现了Map接口
Map集合中的每一个元素,由2部分组成
一个称为key
一个称为value
map的特点是基于key找到与之对应的value。遍历不是map的强项
Map<Integer,String> map = new HashMap<>();
map.put(key,value) ; //添加一个元素//重复添加同一个key的元素,value值覆盖 (key是去重)
map.putAll(Map otherMap) ;//添加一组元素。将另一个map中的元素都添加到当前map集合中
String value = map.get(key) ; //根据key取出对应的value
map.remove(key) ;//删除key对应的数据, 同时返回删除的value
map.size(); //获取元素(键值对)的个数
map.clear();//清空集合
map.isEmpty();//判断集合是否为空
map.containsKey(key);//判断集合是否包含指定的key
map.containsValue(value);//判断集合是否包含指定的value
//map集合的遍历
// map集合不支持直接遍历(这就不是map特点)
// 可以间接遍历
Set<Integer> keys = map.keySet(); //返回装有所有key的set集合
Collection<String> values = map.values();//返回装有所有value的collection集合,//Collection集合也支持迭代器遍历
//对于map存储的元素,在存入之前,这个原有分为key和value
//在存入map集合之后,会将key和value组成一个对象(方便存储)
//entrySet获得一个装有所有键值对数据的set集合
//Entry是Map中定义的一个内部类(内部接口)
Set<Map.Entry<Integer, String>> entries = map.entrySet();
那么今天的内容就到这里啦,如果存在哪些疑问或问题欢迎大家指出,我们下期再见~
相关文章:
Java入门:22.集合的特点,List,Set和Map集合的使用
1 什么是集合 本质就是容器的封装,可以存储多个元素 数组一旦创建,长度就不能再改变了。 数组一旦创建,存储内容的类型不能改变。 数组可以存储基本类型,也可以存储引用类型。 数组可以通过length获得容量的大小,但…...
重生之我在异世界学编程之C语言:深入指针篇(下)
大家好,这里是小编的博客频道 小编的博客:就爱学编程 很高兴在CSDN这个大家庭与大家相识,希望能在这里与大家共同进步,共同收获更好的自己!!! 目录 题集(1)指针笔试题1&a…...
理解Parquet文件和Arrow格式:从Hugging Face数据集的角度出发
parquet发音:美 [pɑrˈkeɪ] 镶木地板;拼花木地板 理解Parquet文件和Arrow格式:从Hugging Face数据集的角度出发 引言 在机器学习和大数据处理中,数据的存储和传输格式对于性能至关重要。两种广泛使用的格式是 Parquet 和 Arr…...
下载 M3U8 格式的视频
要下载 M3U8 格式的视频(通常是 HLS 视频流),可以尝试以下几种方法: 方法 1:使用下载工具(推荐) 1. IDM(Internet Download Manager): 安装 IDM 并启用浏…...
Tomcat使用教程
下载地址:https://tomcat.apache.org/ 配置环境变量 变量名: CATALINA_HOME 变量值: D:\tools\apache-tomcat-9.0.97 Path: %CATALINA_HOME%\bin 启动Tomcat(打开命令提示符) startup.bat 解决乱码问题(打开conf\logging.properties) java.util.logging.Conso…...
LabVIEW氢气纯化控制系统
基于LabVIEW的氢气纯化控制系统满足氢气纯化过程中对精确控制的需求,具备参数设置、过程监控、数据记录和报警功能,体现了LabVIEW在复杂工业控制系统中的应用效能。 项目背景 在众多行业中,尤其是石油化工和航天航空领域,氢气作为…...
现在的电商风口已经很明显了
随着电商行业的不断发展,直播带货的热潮似乎正逐渐降温,而货架电商正成为新的焦点。抖音等平台越来越重视货架电商,强调搜索功能的重要性,预示着未来的电商中心将转向货架和搜索。 在这一转型期,AI技术与电商的结合为…...
Uniapp触底刷新
在你的代码中,使用了 scroll-view 来实现一个可滚动的评论区域,并且通过监听 scrolltolower 事件来触发 handleScrollToLower 函数,以实现“触底更新”或加载更多评论的功能。 关键部分分析: scroll-view 组件: scroll-view 是一…...
开源项目 - face parsing 人脸区域分割 人像区域分割 人脸分割 人像区域分割 BiSeNet
开源项目 - face parsing 人脸区域分割 人像区域分割 人脸分割 人像区域分割 BiSeNet 项目地址:GitHub - XIAN-HHappy/face_parsing: face_parsing 脸部分割 示例: 助力快速掌握数据集的信息和使用方式。 数据可以如此美好!...
python游戏设计---飞机大战
1.前言 上次做飞机大战游戏有人这么说: 好好好!今天必须整一个,今天我们来详细讲解一下,底部找素材文件下载!!! 2.游戏制作 目录如下: 1.导入的包 import pygame import sys imp…...
13TB的StarRocks大数据库迁移过程
公司有一套StarRocks的大数据库在大股东的腾讯云环境中,通过腾讯云的对等连接打通,通过dolphinscheduler调度datax离线抽取数据和SQL计算汇总,还有在大股东的特有的Flink集群环境,该环境开发了flink开发程序包部署,实时…...
HTTP代理有那些常见的安全协议?
在数据采集领域,HTTP代理扮演着至关重要的角色,它不仅帮助我们访问互联网资源,还涉及到数据的安全传输。了解HTTP代理中常见的安全协议对于保护数据安全、提高数据采集效率至关重要。那么,有哪些安全协议是在HTTP代理中常用的呢&a…...
Kylin Server V10 下基于Kraft模式搭建Kafka集群
一、Kraft 模式与 ZooKeeper 模式简介 在Kafka 2.8 之前,Kafka 重度依赖 ZooKeeper 集群做元数据管理、Controller 的选举等(统称为共识服务);当ZooKeeper 集群性能发生抖动时,Kafka 的性能也会受到很大的影响。如下图所示: 在 Kafka 2.8 之后,引入了基于 Raft …...
tauri使用github action打包编译多个平台arm架构和inter架构包踩坑记录
这些error的坑,肯定是很多人不想看到的,我的开源软件PakePlus是使用tauri开发的,PakePlus是一个界面化将任何网站打包为轻量级跨平台软件的程序,利用Tauri轻松构建轻量级多端桌面应用和多端手机应用,为了实现发布的时候…...
Python爬虫与窗口实现翻译小工具(仅限学习交流)
Python爬虫与窗口实现翻译小工具(仅限学习交流) 在工作中,遇到一个不懂的单词时,就会去网页找对应的翻译,我们可以用Python爬虫与窗口配合,制作一个简易的翻译小工具,不需要打开网页,自动把翻译结果显示出来。 整个过程比较简单。 # This is a sample Python script. …...
紫光展锐联合上汽海外发布量产车型,赋能汽车智能化
当前,智能汽车产业迎来重大变局,随着人工智能、5G、大数据等新一代信息技术的迅猛发展,智能网联汽车正呈现强劲发展势头。 11月26日,在2024紫光展锐全球合作伙伴大会汽车电子生态论坛上,紫光展锐与上汽海外出行联合发…...
Maven 打包出现问题解决方案
我执行 mvn install 报如下错误 可是我在 web 模块中能正确引用到 common 的类,于是我把 web 引用到的 common 中的类先移动到 web 模块中,然后把 common 模块的类都删掉,然后再次执行 mvn install,结果报错如下: [ERROR] Faile…...
第四话:JS中的eval函数
theme: channing-cyan 1.不要使用eval! 如果你从来都没有用到过eval这个函数,甚至你都不知道这个函数的作用。那么我只能说:你做了一件正确的事情 o.O 虽然我这篇文章要说一下eval函数的一些能力和注意点,但是我希望࿰…...
歇一歇,写写段子
无聊的日子都在写段子1.0 中学的时候喜欢看意林之类的杂志, 里面的作者用乱七八糟的理由跑去旅游,然后说“阻碍你脚步的永远只有逃离的勇气和对生活的热爱”, 我觉得太对了,可惜 12306 付款方式里没有勇气和热爱,不…...
TypeScript (一)运行环境配置,数据类型,可选类型,联合类型,type与interface,交叉类型,断言as,字面量类型,类型缩小
文章目录 一、认识TS1.1 JS 存在的问题1.2 TS的出现1.3 TS运行环境运行ts的三种方式 1.4 变量声明1.5 类型推断 二、数据类型2.1 JS数据类型(1) 数组Array(2) 对象Object(3) 其他类型 2.2 TS特有数据类型(1) any类型(2) unknown类型(3) void类型(4) never (了解)(5) tuple类型 …...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...
springboot 百货中心供应链管理系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,百货中心供应链管理系统被用户普遍使用,为方…...
Java 8 Stream API 入门到实践详解
一、告别 for 循环! 传统痛点: Java 8 之前,集合操作离不开冗长的 for 循环和匿名类。例如,过滤列表中的偶数: List<Integer> list Arrays.asList(1, 2, 3, 4, 5); List<Integer> evens new ArrayList…...
java 实现excel文件转pdf | 无水印 | 无限制
文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...
大语言模型如何处理长文本?常用文本分割技术详解
为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...
(二)原型模式
原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...
SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...
select、poll、epoll 与 Reactor 模式
在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。 一、I…...
pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)
目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关࿰…...
