【Java】容器|Set、List、Map及常用API
目录
一、概述
二、List
1、List的常用API
2、ArrayList
3、List遍历
三、Set
1、Set的常用方法:
2、HashSet
3、遍历集合:
四、Map
1、Map常用API
2、HashMap
3、遍历Map
五、迭代器
一、概述
在Java中所有的容器都属于Collection接口下的内容
1、Set——这种容器的特点: 存储的数据不能重复. 自动去重. 无序 无索引 不可重复
2、List——这种容器和数组差不多, 优势是不定长. 随便加. 有序 有索引,可重复
3、Map——这种容器是一对一对的存 ,键值对 就像我们存电话号码的时候. 肯定是”名字-电话”这样存储. 找电话用名字找就行了

二、List
List有两个常用的实现类: ArrayList, LinkedList.
List list = new ArrayList()——实现类 向上转型
List list = new LinkedList()——实现类 向上转型
ArrayList和LinkedList在使用上没有什么区别. 注意, 其实是有区别的. 只是在明面上看不出来而已.

1、List的常用API
- add(obj) ——添加元素
-
get(i) ——查看第i个元素
-
set(…)——修改某个位置
-
size() ——查看列表中的数据个数
-
isEmpty() ——判断是否是空列表
-
indexOf(xxx) ——查看xxx元素在列表中的位置
-
lastIndexOf(xxx) ——查看xxx元素在列表中最后一次出现的位置
-
contains(xxx) ——判断列表中是否包含了xxx,列表中包含指定元素,则返回 true,否则返回 false
-
subList(start,end) ——从列表中start开始截取, 截取到end 但不包括end
-
toArray() 集合转化成数组
-
remove(obj) 删除某个元素
-
remove(i) 删除某个位置的元素
⚠️容器为了通用性,往容器里面加的东西都会被向上转型为Object类型,get() 拿到的数据是object类型,需要再强转为原本的类型(向下转型)
2、ArrayList
List是一个接口,而ArrayList是List接口的一个实现类。
ArrayList类继承并实现了List接口。
因此,List接口不能被构造,也就不能创建实例对象,但是我们可以为List接口创建一个指向自己的对象引用,而ArrayList实现类的实例对象就在这充当了这个指向List接口的对象引用。
List list = new ArrayList();
-
特点:有序 有索引 可重复 底层是数组 里面可以放不同的变量
-
正确使用方式是要 规定集合的数据类型——泛型:可以是任意的引用数据类型;
-
泛型:规定集合存储的数据类型。
3、List遍历
List遍历:for循环;增强for;迭代器
ArrayList<String> list = new ArrayList<>();
list.add("fsakjfs");
list.add("13213");
list.add("[][(*(");//遍历格式1: (通用格式):size() + get();
for(int i=0;i<list.size();i++){System.out.println(list.get(i));
}//遍历格式2:增强for 不能直接访问索引 只能从头遍历到尾
for(String element : list){System.out.println(element);
}//遍历格式3:迭代器 返回一个迭代器的对象 泛型
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()){ //是不是有下一个元素String next = iterator.next();//获取当前元素 最开始指向空 移动指针 移动到下一个元素System.out.println(next);
}
三、Set
Set是一个可以自动去除重复的容器
Set是一个接口. 有两个常用的实现类. 一个是HashSet, 另一个是TreeSet(排序)
HashSet按照Hash的想法来放数据, TreeSet按照Tree的思想来存放数据.
HashSet 瞎摆->存储的速度快
TreeSet 按顺序摆->存储的时候 帮我们排序, 存储的速度就慢
1、Set的常用方法:
-
add() ——添加元素
-
remove() ——删除元素
-
size() ——集合中元素的个数
-
contains() ——判断是否包含了xxxx
-
isEmpty() ——判断集合是否为空
-
clear() ——将集合里的所有数据清空
-
toArray(),将集合转化成为对应数组类型的数据,Set 集合中的所有对象创建一个数组。
2、HashSet
-
特点:无序,不可重复。 HashSet<T> set = new HashSet<T>();
3、遍历集合:
Set遍历:1、增强for 2、迭代器
因为HashSet无序,不可重复,没有索引不能用for循环
//遍历1:增强for,底层就是迭代器next
for(String element : set) {System.out.println(element);
}
//遍历2:迭代器
/*
迭代器是一个接口 Iterable接口有个iterator()方法,
该方法返回一个Iterable接口的实现类 实现类重写iterator()方法*/
System.out.println("==================");
Iterator<String> it = set.iterator(); //生成返回值的快捷方式:ctrl + alt + v / .var tab键
while(it.hasNext()) {String next = it.next();System.out.println(next);
}
四、Map
Map常见的实现类也有两个, 一个是HashMap(常用),不排序; 另一个TreeMap.排序
1、Map常用API
-
put(…)——添加数据
-
get(key) ——使用key查询value
-
isEmpty()—— 判断Map是否是空的
-
size() ——返回key, value键值对的个数
-
containsKey(key) ——判断是否存在key
-
remove(key) ——根据key删除信息
-
keySet() ——获取到map中key的集合set
-
clear() ——清空map里的所有key和value
-
entrySet()——返回一个Set集合,此集合的类型为Map.Entry。
2、HashMap
-
特点:键值对。一个键对应一个值,键不能重复。存储重复的键后会覆盖之前的值。
-
key+value是一个entry
entry:Map是java中的接口,Map.Entry是Map的一个内部接口,内部类,此接口为泛型,定义为Entry<K,V>。
它表示Map中的一个实体(一个key-value对)。接口中有getKey(),getValue方法
keySet()方法返回值是Map中key值的集合;
entrySet()的返回值也是返回一个Set集合,此集合的类型为Map.Entry。
Set<Map.Entry<K,V>> entrySet = map.entrySet();
for(Entry e : entrySet) {
System.out.println(e.getKey() + "===" + e.getValue());
}
3、遍历Map
增强for、迭代器
public static void main(String[] args) {HashMap<String,Integer> map = new HashMap<>();map.put("ID",99); //put 添加+覆盖(相同的key会覆盖)map.put("AGE",18);map.put("SCORE",99);System.out.println(map);//1、通过键找值 get 找到所有的键 keySet——把key拿出来打包成set集合,遍历以此取出对应的值//找出所有的键Set<String> keySet = map.keySet(); //for(String key : keySet) {//找到对应的值Integer value = map.get(key);System.out.println(key + ":" + value);}System.out.println("================");//2、通过取出所有的键值对,entrySet————也是一个set集合//Entry是map的类中类Set<Map.Entry<String, Integer>> entrySet = map.entrySet();for(Map.Entry<String, Integer> entry : entrySet) {System.out.println(entry.getKey() + ":" + entry.getValue());}System.out.println("==============");//3、Lambdamap.forEach((k,v) -> {System.out.println(k + " : " + v);});//4、迭代器 通过key的迭代器Set set = map.keySet();//拿出所有的keyIterator it = set.iterator();while(it.hasNext()){String key = (String) it.next();//拿到所有的key 强制转换System.out.println(map.get(key));}//5、迭代器 通过entry entry是map的内部类Set setEntry = map.entrySet();//entry也是set集合Iterator itentry = setEntry.iterator();while(itentry.hasNext()){Map.Entry entry = (Map.Entry) itentry.next();//拿到所有的key 强制转换System.out.println(entry.getKey());System.out.println(entry.getValue());}}
五、迭代器
迭代器是用来干嘛的? 遍历数据集合的. 它存在的意义就是可以让不同的数据类型拥有相同的遍历方式
List, Set, Map. 完全不同的三种数据类型. 但是都可以使用Iterator.
方法:
- next() ——会自动帮我们获取到元素. 并且指针指向下一个元素
- hasnext()——判断有没有下一个元素,因为集合如果拿空了会报错
相关文章:
【Java】容器|Set、List、Map及常用API
目录 一、概述 二、List 1、List的常用API 2、ArrayList 3、List遍历 三、Set 1、Set的常用方法: 2、HashSet 3、遍历集合: 四、Map 1、Map常用API 2、HashMap 3、遍历Map 五、迭代器 一、概述 在Java中所有的容器都属于Collection接口下的内容 1…...
Navicat 面试题及答案整理,最新面试题
Navicat 在数据库管理中的主要用途有哪些? Navicat 是一款数据库管理工具,其主要用途包括: 1、多数据库支持: Navicat 支持多种数据库连接,包括 MySQL、Oracle、PostgreSQL、SQLite、SQL Server 等,方便用…...
android studio 连接mumu模拟器调试
1、打开mumu模拟器 2、在Android Studio 中 控制台 cd 到 sdk 目录下 platform-tools 文件夹,有一个adb.exe 可运行程序 一般指令: adb connect 127.0.0.1:7555 但是这个执行在window环境下可能会报错 解决方法是在 adb 之前加 ".\", 问题…...
四连通与八连通的区别 -- 图例讲解
概念 四连通区域:指从某个点出发,只能通过上、下、左、右四个方向的运动到达区域内的其他点,且不能跨越区域的边界。 八连通区域:除了上、下、左、右四个方向,还可以沿对角线方向(左上、右上、左下、右下…...
关于分布式微服务数据源加密配置以及取巧方案(含自定义加密配置)
文章目录 前言Spring Cloud 第一代1、创建config server项目并加入加解密key2、启动项目,进行数据加密3、实际项目中的测试server Spring Cloud Alibaba低版本架构不支持,取巧实现无加密配置,联调环境问题加密数据源配置原理探究自定义加密解…...
快速了解JavaScript
1.1 javaScript 历史 创始人 布兰登 艾奇 生于1961年 在1995设计LiveScript后改名为JavaScript 1.2 javaScript 是什么类型的语言 JavaScript是一种在客户端运行的脚本语言(不需要编译,由js引擎逐行解释执行) 1.3 JavaScript可以做什么 …...
【安全类书籍-3】XSS跨站脚剖析与防御
目录 内容简介 作用 下载地址 内容简介 这本书涵盖以下几点: XSS攻击原理:解释XSS是如何利用Web应用未能有效过滤用户输入的缺陷,将恶意脚本注入到网页中,当其他用户访问时被执行,实现攻击者的目的,例如窃取用户会话凭证、实施钓鱼攻击等。 XSS分类:分为存储型XSS(…...
http postman
地址 : https://oaqas.lingyiitech.com:9800/auth-api/openapi/dingtalk-oa/topapi/message/corpconversation/asyncsend_v2?token40216bf0ceea8e56b778d537b20f5d23 https://oaqas.lingyiitech.com:9800/auth-api/openapi/dingtalk-oa/topapi/message/corpconve…...
[数据集][目标检测]螺丝螺母检测数据集VOC+YOLO格式2100张13类别
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):2100 标注数量(xml文件个数):2100 标注数量(txt文件个数):2100 标注…...
华为鲲鹏ARM处理器920、916系列
鲲鹏处理器-鲲鹏社区 (hikunpeng.com) 产品规格 鲲鹏920系列 型号: 7260(64核)、5250(48核)、5220(32核)、3210(24核)7260核数64核 主频2.6GHz 内存通道8TDP功耗180W 组…...
AG32VF407 应用开发问答1
有工程师想用AG32VF407RGT6来做项目,同时用到CPLD和MCU,MCU中用到AD、DAC、CMP,CMP的输出内部连到CPLD上,因为第一次用。所以一起进行了一些技术交流,在此也分享给大家。 Questions1: 1、关于boot0、boot1相关的说明…...
一站式解决方案:uni-app条件编译及多环境配置,appid动态修改攻略!
前言 这篇文章主要介绍uniapp在Hbuilderx 中,通过工程化,区分不同环境、动态修改小程序appid以及自定义条件编译,解决代码发布和运行时手动切换到问题。 背景 在企业级的应用中,通常会分为,开发、联调、生产等多个环…...
从政府工作报告中的IT热词统计探计算机行业发展(二)人工智能+:3次
政府工作报告作为政府工作的全面总结和未来规划,不仅反映了国家整体的发展态势,也为各行各业提供了发展的指引和参考。随着信息技术的快速发展,计算机行业已经成为推动经济社会发展的重要引擎之一。因此,从政府工作报告中探寻计算…...
Selenium库原代码WebDriver及WebElement方法属性总结
简单示例: from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as ECdriver webdriver.Chrome()try:driver.ge…...
C# 部署ICE框架以及用例(VS2019)
使用Windows 10环境,VS2019进行ICE用例开发 用例结构:客户端和服务端 关键技术:集成ICE环境,可以创建ice文件并自动生成对应的cs文件 1.环境安装 ICE Build插件安装。安装以后,就可以在项目中插入ice文件 2.代码实…...
PostgreSQL 数据加密怎么弄,应该用哪种方案
开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, Oceanbase, Sql Server等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,(…...
1.通过AD组策略如何做封禁高危端口的策略?AD域控如何给加域的电脑做指定端口号封禁呢?
目录 (1)高危端口简介 1. 高危端口TCP和UDP类型 2.为什么要做AD组策略封禁加域计算机的一些高危的端口?好处是什么? (2)实战步骤过程 实验环境 第一步:新建计算机策略-编辑 第二步:将策略应用到OU...
05.BOM对象
一、js组成 JavaScript的组成 ECMAScript: 规定了js基础语法核心知识。比如:变量、分支语句、循环语句、对象等等 Web APIs : DOM 文档对象模型, 定义了一套操作HTML文档的APIBOM 浏览器对象模型,定义了一套操作浏览器窗口的API 二、windo…...
【Golang星辰图】Go语言游戏开发:选择合适的库加速你的开发过程
打造出色的游戏体验:使用Go库进行游戏和图形开发 前言 Go语言通过其简洁、高效和并发性的特性,逐渐在开发领域中崭露头角。对于游戏和图形开发,Go也有一些优秀的库和引擎可供选择。本文将介绍几个流行的Go库,包括ebiten、raylib…...
51单片机-AT24C02(I2C总线)
目录 一,介绍及元件工作原理 7.时序结构(重要) 8.i2C总线数据帧(重要) 二,应用 一,介绍及元件工作原理 1.元件介绍 2.存储器 3.地址总线和数据总线 地址总线只能一次选中一行 4.引脚及应用…...
批量为视频文件添加内嵌封面:两种模式的适用场景与配置
记录一下使用【批量添加MP4封面工具】的实践经验,重点讲两种封面模式的选择和配置。背景视频文件(MP4、MKV等)支持在文件内部嵌入封面图片(attached_pic)。嵌入后,在文件管理器的缩略图视图中会显示指定的封…...
小白也能懂:雪女-斗罗大陆-造相Z-Turbo文生图模型使用详解
小白也能懂:雪女-斗罗大陆-造相Z-Turbo文生图模型使用详解 1. 模型介绍 1.1 什么是雪女-斗罗大陆-造相Z-Turbo 雪女-斗罗大陆-造相Z-Turbo是一款专门用于生成《斗罗大陆》风格图片的AI模型,特别擅长创作与"雪女"角色相关的精美图像。这个模…...
Android 15 音频子系统(八):Audio HAL 与硬件接口——音频数据的最后一公里
引言:最后一公里的旅程 如果把 Android 音频系统比作一条物流网络,那么 AudioFlinger 是"中央分拣中心",AudioPolicy 是"路由规划师",而 Audio HAL(Hardware Abstraction Layer)就是最终把包裹送到用户手里的"快递员"。 前几篇我们聊了 …...
支付宝秘钥模式说明
1 python服务器需要使用 PKCS1格式2 秘钥格式是不带头尾的,中间的纯字符串...
千万级日志清洗仅需11秒:Polars 2.0流式分块+并行UDF实战(附可复用清洗模板库)
第一章:千万级日志清洗仅需11秒:Polars 2.0流式分块并行UDF实战(附可复用清洗模板库)传统Pandas在处理千万级Nginx或Kafka日志时,常因内存暴涨与单线程瓶颈导致清洗耗时超3分钟。Polars 2.0引入的scan_csv()流式扫描 …...
Win10下MobSF安装避坑指南:从Python版本冲突到环境变量配置全解析
Win10下MobSF安装避坑指南:从Python版本冲突到环境变量配置全解析 移动应用安全测试已成为开发流程中不可或缺的一环。作为一款强大的开源工具,MobSF(Mobile Security Framework)因其全面的自动化分析能力备受开发者青睐。然而在…...
Qwen3.5-9B实战落地:政务公文校对+政策条款关联性分析案例
Qwen3.5-9B实战落地:政务公文校对政策条款关联性分析案例 1. 项目背景与模型介绍 Qwen3.5-9B是一款拥有90亿参数的开源大语言模型,在政务场景中展现出强大的应用潜力。这个模型特别适合处理结构化文本分析任务,能够理解复杂的政策语言和公文…...
Tencent Hunyuan3D-1.0日志轮转配置:防止磁盘空间耗尽的日志管理方案
Tencent Hunyuan3D-1.0日志轮转配置:防止磁盘空间耗尽的日志管理方案 【免费下载链接】Hunyuan3D-1 腾讯开源的Hunyuan3D-1项目,创新提出两阶段3D生成方法,实现快速、高质量的文本到3D和图像到3D转换,融合Hunyuan-DiT模型…...
WZ文件编辑神器:Harepacker-resurrected从入门到精通的完整指南
WZ文件编辑神器:Harepacker-resurrected从入门到精通的完整指南 【免费下载链接】Harepacker-resurrected All in one .wz file/map editor for MapleStory game files 项目地址: https://gitcode.com/gh_mirrors/ha/Harepacker-resurrected Harepacker-resu…...
python建筑工程项目管理系统设计与实现
目录同行可拿货,招校园代理 ,本人源头供货商功能模块分析资源与成本管理进度与质量管理技术实现要点扩展功能建议项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作同行可拿货,招校园代理 ,本人源头供货商 功能模块分析 项目管理…...
