Map 双列集合根接口 HashMap TreeMap
Map接口是一种双列集合,它的每一个元素都包含一个键对象Key
和值Value
键和值直接存在一种对应关系 称为映射 从Map集中中访问元素, 只要指定了Key
就是找到对应的Value
常用方法
HashMap实现类无重复键无序
它是Map
接口的一个实现类,用于存储键值映射关系,并且HashMap
集合没有重复的键且键值无序
import java.util.HashMap;public class h {public static void main(String[] args) {HashMap map = new HashMap(); //创建Map对象map.put("1","张三"); // put方法 存储键和值map.put("2","李四");map.put("3","王五");map.put("3","赵六"); // 测试键是否具有唯一性 显示覆盖System.out.println("1:"+map.get("1")); // 根据键获取值System.out.println("2:"+map.get("2"));System.out.println("3:"+map.get("3"));}
}--------------------------------输出:1:张三
2:李四
3:赵六**注意: **第9行代码,键位为3重复了,但是还是输出了它
这是因为键位具有唯一性不能出现2个3但是如果存储了两个相同的值,后存储的值会覆盖原有的值 **键相同 值覆盖**
遍历Key键获取对应的值
通过遍历Map
集合中所有的键位,也就是对应的数字Key
,不遍历值Value
,再根据key
迭代到值
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;public class h {public static void main(String[] args) {HashMap map = new HashMap(); //创建Map对象map.put("1","张三"); // put方法 存储键和值map.put("2","李四");map.put("3","王五");Set keySet = map.keySet(); //获取Key 123 键的方法 SetIterator it = keySet.iterator(); // 遍历迭代键while (it.hasNext()) { // 判断是否下个元素 也就是自动++Object key = it.next(); // 依次拿到值Object value = map.get(key); // 根据key值获取到对应的ValueSystem.out.println(key+":"+value); // 依次输出}}
}首先调用Map对象的KeySet ()方法获得存储 Map 中所有键的Set 集合
然后通过 Iterator 选代Set 集合的每一个元素,即每一个键
最后通过调get(Stringkey)方法,根据键获取对应的值-------------------------------------------输出:1:张三
2:李四
3:王五
遍历集合映射关系
这是另一种遍历方式是先获取集合中的所有的映射关系,然后从映射关系中分别取出对应的键和值,然后分别输出即可
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;public class h {public static void main(String[] args) {HashMap map = new HashMap(); //创建Map对象map.put("1","张三"); // put方法 存储键和值map.put("2","李四");map.put("3","王五");Set entrySet = map.entrySet(); // 获得映射集合Iterator it = entrySet.iterator(); // 获得遍历迭代器while (it.hasNext()){// 获得集合中键值对应的映射关系Map.Entry entry = (Map.Entry) (it.next());Object key = entry.getKey(); // 获得Entry 的键 123Object value = entry.getValue(); // 获得Enrty的值System.out.println("分别输出是"+key+":"+value);}}
}-------------------------------------------输出:分别输出是1:张三
分别输出是2:李四
分别输出是3:王五**注意:**Map.entrySet()获取到了存储在map集合里面的所有映射的值, 这个集合存放了Map.Entry类型的
映射数据,(Entry是内部接口) 每个Map.Entry对象代表了一个键值在16行中. 然后通过遍历迭代
依次取出键和值输出 key value
区别:
上面两个迭代器的区别显而易见,一个是通过Key
值来拿到值,这是需要一个key
就可以获取到,后者集合映射关系则是需要两个都获取到key
和value
缺一不可
Map操作集合常用方法
方法 | 描述 |
value() | 获得Map实例中的所有 返回类型为Collection(单列集合) |
size() | 得到 集合类的大小 |
containsKey() | 判断是否包含传入的键 返回真或假 |
containsValue() | 判断是否包含传入的值 返沪真或假 |
remove() | 根据对应的 键删除对应的值 |
import java.util.*;public class h {public static void main(String[] args) {HashMap map = new HashMap(); //创建Map对象map.put("1","张三"); // put方法 存储键和值map.put("2","李四");map.put("3","王五");map.put("4","赵六");System.out.println("集合的大小是"+map.size());// 判断集合有没有键值 2 还要值王五System.out.println("判断是否包含传入的键"+map.containsKey("2"));System.out.println("判断是否有传入的值"+map.containsValue("赵六"));System.out.println("删除键为1的值"+map.remove("1")); //删除键为1//通过map.values()方法单独获取到Map集合的Collection集合,然后迭代器输出每一个单独的value// 所以返回类型为CollectionCollection values = map.values();Iterator it = values.iterator();while (it.hasNext()){Object value = it.next();System.out.println(value);}}
}----------------------------------------------------输出:集合的大小是4
判断是否包含传入的键true
判断是否有传入的值true
删除键为1的值张三
李四
王五
赵六
LinkedHashMap无重复键存取顺序一致
HashMap
集合迭代出来的元素是无序的,存入和取出不一致,如果需要一致那么需要使用这个方法 ,它是HashMap的子类,和单列集合的LinkedList
一样 它也使用双向链表来维护内部元素的关系,使Map元素迭代的顺序和存入的顺序一致
import java.util.*;public class h {public static void main(String[] args) {LinkedHashMap map = new LinkedHashMap(); //创建Map对象map.put("2","张三"); // put方法 存储键和值map.put("1","李四");map.put("3","王五");map.put("4","赵六");map.put("4","ss");Set keySet = map.keySet();Iterator it = keySet.iterator(); //while (it.hasNext()){Object key = it.next();Object value = map.get(key); // 获得每个键Key对应的值System.out.println(key+":"+value);}}
}----------------------------------------------存取顺序一致输出:2:张三
1:李四
3:王五
4:ss
TreeMap实现类无重复键有序
Treemap是可以对集合中元素键值进行排序的类, 添加的元素自动排序 1 2 3 4
并且没有重复的键,只是后面添加的 ss
覆盖了键值4
,证实了TreeMap
中的键必须是唯一的,不能重复且有序,如果存储了相同的,后存储的值会覆盖原有的值
import java.util.*;public class h {public static void main(String[] args) {TreeMap map = new TreeMap(); //创建Map对象map.put("2","张三"); // put方法 存储键和值map.put("1","李四");map.put("3","王五");map.put("4","赵六");map.put("4","ss");Set keySet = map.keySet(); // 获取集合中所有的键集合Iterator it = keySet.iterator(); //while (it.hasNext()){Object key = it.next();Object value = map.get(key); // 获得每个键Key对应的值System.out.println(key+":"+value);}};
}-------------------------------------------------------输出:1:李四
2:张三
3:王五
4:ss
比较排序法
TreeMap
集合之所以对添加的元素的键值进行排序,其实通TreeSet
一样,它的排序也分自然排序和比较排序下面就来演示 . 其中 String
类是自定义的键
import java.util.*;
class Student{private String name;private int age;public String getName() { // 封装构造存取值get() set()return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}// 构造函数public Student(String name, int age) {super();this.name = name;this.age = age;}@Override //表示为覆盖,重写的方法 下面也是重写了toString// 此toString会自动输出 这个方法public String toString(){return "Sttudent[name="+name+",age="+age+"]";}
}
public class h {public static void main(String[] args) {TreeMap map = new TreeMap(); //创建Map对象map.put("2","张三"); // put方法 存储键和值map.put("1","李四");map.put("3","王五");map.put("4","赵六");map.put("4","ss");Set keySet = map.keySet(); // 获取集合中所有的键集合Iterator it = keySet.iterator(); //while (it.hasNext()){Object key = it.next();Object value = map.get(key); // 获得每个键Key对应的值System.out.println(key+":"+value);}}
}----------------------------------输出:1:李四
2:张三
3:王五
4:ss
Properties集合配置
Hashtable的子类
它主要用来存储字符串类型的键和值,在实际开发中经常使用Properties
集合来存取应用的配置项,也就是模板,价格有这样的代码,背景颜色为red
字体大小为 14px
语言问china
其配置项应该这样存储
Backrgroup-color = red
Font-szie = 14px
Language = chinese
使用Properties
集合来配置应为
针对Properties
类针对字符串有两个存取的方法,
setProperty
将键和值添加到集合中
getProperty
获取对应的值
propertyNames
得到一个包含所有键的Enumeration
,然后利用迭代器遍历所有键的时候,再根据
getProperty
方法获得键所对应的值
import java.util.Enumeration;
import java.util.Locale;
import java.util.Properties;public class d {public static void main(String[] args) {Properties p = new Properties();p.setProperty("back","red"); // 使用set在集合中存入对应的键和值p.setProperty("size","14px");p.setProperty("语言","china");// 获取Enumeration对象所有键的枚举也就是所有的数据Enumeration names = p.propertyNames(); while (names.hasMoreElements()){ // 循环遍历所有的键String key = (String) names.nextElement(); // 拿到keyString value = p.getProperty(key); // 根据键拿到对应的值System.out.println(key+":"+value);}}
}---------------------------------------------输出:back:red
语言:china
size:14px
相关文章:

Map 双列集合根接口 HashMap TreeMap
Map接口是一种双列集合,它的每一个元素都包含一个键对象Key和值Value 键和值直接存在一种对应关系 称为映射 从Map集中中访问元素, 只要指定了Key 就是找到对应的Value 常用方法 HashMap实现类无重复键无序 它是Map 接口的一个实现类,用于存储键值映射关系,并且HashMap 集合没…...
Pip源设置(清华源)相关总结
1、临时使用 pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package 2、永久更改pip源 升级 pip 到最新的版本 (>10.0.0) 后进行配置: pip install pip -U pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple 如…...
编程入门攻略
编程小白如何成为大神?大学新生的最佳入门攻略 编程已成为当代大学生的必备技能,但面对众多编程语言和学习资源,新生们常常感到迷茫。如何选择适合自己的编程语言?如何制定有效的学习计划?如何避免常见的学习陷阱&…...

C++核心编程和桌面应用开发 第十一天(静态转换 动态转换 常量转换 重新解释转换)
目录 1.静态类型转换 1.1语法 1.2用法 2.动态类型转换 2.1语法 2.2用法 3.常量类型转换 3.1语法 3.2用法 4.重新解释转换 4.1语法 1.静态类型转换 1.1语法 static_cast<目标转换类型>(待转换变量) 1.2用法 可用于基本数据类型之间的转换。比如int和char之…...

Ubuntu-Ubuntu22.04下Anacodna3的qmake和Qt的qmake冲突问题
Ubuntu22.04下Anacodna3的qmake和Qt的qmake冲突问题 一、问题描述二、原因分析三、解决办法 一、问题描述 Ubuntu22.04下Anacodna3的qmake和Qt的qmake冲突问题 zhyzhy-HP:~/Sources/mpv-examples/libmpv/qt$ make g -c -pipe -g -Wall -Wextra -D_REENTRANT -fPIC -DQT_WIDGET…...

mysql用户管理(user表列信息介绍,本质,管理操作),数据库的权限管理(权限列表,权限操作)
目录 用户管理 介绍 user表 介绍 列信息 Host User *_priv authentication_string 用户管理的本质 操作 创建用户 删除用户 修改用户信息 修改密码 自己修改 root用户修改指定用户的密码 数据库的权限 权限列表 给用户授权 查看权限 回收权限 刷新权限 …...

AI工具 | Notion全新AI集成:搜索、内容生成、数据分析与智能聊天功能发布
新的 Notion AI 集成了搜索、生成内容、分析数据和智能聊天等功能,所有操作都可以在 Notion 内完成。依托于 GPT-4 和 Claude 等先进的 AI 模型,用户可以与 AI 聊天并获取针对各种话题的答案。 随时使用 在 Notion 页面右下角找到 AI 图标,点…...

微知-如何查看PCIe设备插入在哪个插槽以及对应的busid?(biosdecode)
背景 以前对于PCIe设备插入到服务器上,有几个slot(slot就是服务器硬件上的插槽)以及哪些插入了设备可用ipmitool查看(具体参考兄弟篇:https://blog.csdn.net/essencelite/article/details/139051451,但是无法知道某个…...

数据结构 —— 树和二叉树简介
目录 0.前言 1.树的认识 什么是树 树的相关概念 树的表示 孩子兄弟表示法 2.二叉树的认识 什么是二叉树 特殊的二叉树 满二叉树 完全二叉树 二叉树的性质 性质一 性质二 性质三 二叉树的存储 顺序存储 链式存储 0.前言 笔者我之前讲解的数据结构都是线性…...
ubuntu安装boost
下载官方安装包官方,我使用的是boost_1_86_0.zip版本 1、解压安装包 2、进入boost_1_86_0 3、./bootstrap.sh --prefix/path/ 4、./b2 5、sudo ./b2 install 6、~/.bashrc配置环境...

【Spring AI】Java实现类似langchain的第三方函数调用_原理与详细示例
Spring AI 介绍 :简化Java AI开发的统一接口解决方案 在过去,使用Java开发AI应用时面临的主要困境是没有统一且标准的封装库,导致开发者需要针对不同的AI服务提供商分别学习和对接各自的API,这增加了开发难度与迁移成本。而Sprin…...
CIM系统:智慧城市的数字基石
计算机集成制造系统(CIM)是智慧城市建设中的关键技术,它通过集成多种信息技术,为城市提供一个全面的数字化镜像。CIM系统不仅涉及建筑信息模型(BIM)、地理信息系统(GIS)、物联网&…...
Android中Fragment的使用场景与生命周期
Android中Fragment的使用场景和生命周期 在Android应用开发中,Fragment是一个非常重要的概念,它允许开发者将Activity拆分成多个可重用的UI组件,从而提供灵活的UI设计,简化Activity的复杂性,并适应不同的屏幕尺寸和方…...
输入网址后,浏览器是如何高效渲染出网页的?
当你打开浏览器,输入一个网址并按下回车,接下来发生的一切仿佛都在瞬间完成——网页很快加载出来,内容、图片、动画一应俱全,像魔法一样。然而,这背后却是一个复杂而高效的协作过程,涉及到浏览器内核的多个组件共同工作,特别是渲染线程的协调作用。那么,浏览器究竟是如…...
springboot单文件,多文件下载方式
简单大文件下载: /*** 下载大文件* param path 路径* param fileName 文件名* return* throws IOException*/ public static ResponseEntity<InputStreamResource> downloadFile(String path, String fileName) throws IOException {Path filePath Paths.ge…...

JIT详解
文章目录 JIT为什么说 Java 语言“编译与解释并存”? JIT原理JVM 架构简览JIT 编译流程JIT 编译器的实现优化策略方法内联逃逸分析 JIT 在Java中,JIT(Just-In-Time)编译器是Java虚拟机(JVM)的一个重要组成…...

线下陪玩导游系统软件源码,家政预约服务源码(h5+小程序+app)
游戏陪玩系统源码陪玩小程序源码搭建基于PHP+MySQL陪玩系统app源码陪玩系统定制开发服务、成品陪玩系统源码 系统基于Nginx或者Apache PHP7.3 数据库mysql5.6 前端为uniapp-vue2.0 后端为thinkphp6 有域名授权加密,其他开源可二开 演示源码下载 开…...

模拟退火算法最常见知识点详解与原理简介控制策略
章节目录 模拟退火算法简介与原理 算法的基本流程与步骤 关键参数与控制策略 模拟退火算法的应用领域 如何学习模拟退火算法 资源简介与总结 一、模拟退火算法简介与原理 重点详细内容知识点总结 1. 模拟退火算法简介 模拟退火算法(Simulated Annealing, SA&#x…...
C语言高效内存管理:对齐、缓存与位域
C语言高效内存管理:对齐、缓存与位域 一、内存对齐 1. 内存对齐的概念 内存对齐(Memory Alignment)是指数据在内存中存储时,其起始地址遵循特定的规则,使得数据能够被高效地访问。CPU通常以固定的字节数(…...
ES操作指南
# Creating a text file with the described Elasticsearch operations. es_operations """ Elasticsearch 基本操作语法: 1. 索引文档 (Index Documents): 自动生成 ID: POST /index_name/_doc { "field1": "value1", "…...
浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)
✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义(Task Definition&…...
RestClient
什么是RestClient RestClient 是 Elasticsearch 官方提供的 Java 低级 REST 客户端,它允许HTTP与Elasticsearch 集群通信,而无需处理 JSON 序列化/反序列化等底层细节。它是 Elasticsearch Java API 客户端的基础。 RestClient 主要特点 轻量级ÿ…...
Linux链表操作全解析
Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...
大语言模型如何处理长文本?常用文本分割技术详解
为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

高危文件识别的常用算法:原理、应用与企业场景
高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...
Caliper 配置文件解析:config.yaml
Caliper 是一个区块链性能基准测试工具,用于评估不同区块链平台的性能。下面我将详细解释你提供的 fisco-bcos.json 文件结构,并说明它与 config.yaml 文件的关系。 fisco-bcos.json 文件解析 这个文件是针对 FISCO-BCOS 区块链网络的 Caliper 配置文件,主要包含以下几个部…...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果
Maven 概述、安装、配置、仓库、私服详解
目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...
CSS设置元素的宽度根据其内容自动调整
width: fit-content 是 CSS 中的一个属性值,用于设置元素的宽度根据其内容自动调整,确保宽度刚好容纳内容而不会超出。 效果对比 默认情况(width: auto): 块级元素(如 <div>)会占满父容器…...