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类型 …...
Python|GIF 解析与构建(5):手搓截屏和帧率控制
目录 Python|GIF 解析与构建(5):手搓截屏和帧率控制 一、引言 二、技术实现:手搓截屏模块 2.1 核心原理 2.2 代码解析:ScreenshotData类 2.2.1 截图函数:capture_screen 三、技术实现&…...
变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析
一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...
微服务商城-商品微服务
数据表 CREATE TABLE product (id bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 商品id,cateid smallint(6) UNSIGNED NOT NULL DEFAULT 0 COMMENT 类别Id,name varchar(100) NOT NULL DEFAULT COMMENT 商品名称,subtitle varchar(200) NOT NULL DEFAULT COMMENT 商…...
从零实现STL哈希容器:unordered_map/unordered_set封装详解
本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说,直接开始吧! 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...
12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...
return this;返回的是谁
一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请,不同级别的经理有不同的审批权限: // 抽象处理者:审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...
接口自动化测试:HttpRunner基础
相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具,支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议,涵盖接口测试、性能测试、数字体验监测等测试类型…...
Unity UGUI Button事件流程
场景结构 测试代码 public class TestBtn : MonoBehaviour {void Start(){var btn GetComponent<Button>();btn.onClick.AddListener(OnClick);}private void OnClick(){Debug.Log("666");}}当添加事件时 // 实例化一个ButtonClickedEvent的事件 [Formerl…...
android RelativeLayout布局
<?xml version"1.0" encoding"utf-8"?> <RelativeLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_parent"android:gravity&…...
