【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.引脚及应用…...
深入剖析AI大模型:大模型时代的 Prompt 工程全解析
今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...
线程同步:确保多线程程序的安全与高效!
全文目录: 开篇语前序前言第一部分:线程同步的概念与问题1.1 线程同步的概念1.2 线程同步的问题1.3 线程同步的解决方案 第二部分:synchronized关键字的使用2.1 使用 synchronized修饰方法2.2 使用 synchronized修饰代码块 第三部分ÿ…...
06 Deep learning神经网络编程基础 激活函数 --吴恩达
深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...
【HTTP三个基础问题】
面试官您好!HTTP是超文本传输协议,是互联网上客户端和服务器之间传输超文本数据(比如文字、图片、音频、视频等)的核心协议,当前互联网应用最广泛的版本是HTTP1.1,它基于经典的C/S模型,也就是客…...
【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中,新增了一个本地验证码接口 /code,使用函数式路由(RouterFunction)和 Hutool 的 Circle…...
python报错No module named ‘tensorflow.keras‘
是由于不同版本的tensorflow下的keras所在的路径不同,结合所安装的tensorflow的目录结构修改from语句即可。 原语句: from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后: from tensorflow.python.keras.lay…...
关于easyexcel动态下拉选问题处理
前些日子突然碰到一个问题,说是客户的导入文件模版想支持部分导入内容的下拉选,于是我就找了easyexcel官网寻找解决方案,并没有找到合适的方案,没办法只能自己动手并分享出来,针对Java生成Excel下拉菜单时因选项过多导…...
【SpringBoot自动化部署】
SpringBoot自动化部署方法 使用Jenkins进行持续集成与部署 Jenkins是最常用的自动化部署工具之一,能够实现代码拉取、构建、测试和部署的全流程自动化。 配置Jenkins任务时,需要添加Git仓库地址和凭证,设置构建触发器(如GitHub…...
Linux安全加固:从攻防视角构建系统免疫
Linux安全加固:从攻防视角构建系统免疫 构建坚不可摧的数字堡垒 引言:攻防对抗的新纪元 在日益复杂的网络威胁环境中,Linux系统安全已从被动防御转向主动免疫。2023年全球网络安全报告显示,高级持续性威胁(APT)攻击同比增长65%,平均入侵停留时间缩短至48小时。本章将从…...
