当前位置: 首页 > news >正文

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 就可以获取到,后者集合映射关系则是需要两个都获取到keyvalue 缺一不可

Map操作集合常用方法

方法

描述

value()

获得Map实例中的所有Value

返回类型为Collection(单列集合)

size()

得到Map

集合类的大小

containsKey()

判断是否包含传入的键 返回真或假

containsValue()

判断是否包含传入的值 返沪真或假

remove()

根据对应的Key

键删除对应的值

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

微知-如何查看PCIe设备插入在哪个插槽以及对应的busid?(biosdecode)

背景 以前对于PCIe设备插入到服务器上&#xff0c;有几个slot&#xff08;slot就是服务器硬件上的插槽&#xff09;以及哪些插入了设备可用ipmitool查看(具体参考兄弟篇&#xff1a;https://blog.csdn.net/essencelite/article/details/139051451&#xff0c;但是无法知道某个…...

数据结构 —— 树和二叉树简介

目录 0.前言 1.树的认识 什么是树 树的相关概念 树的表示 孩子兄弟表示法 2.二叉树的认识 什么是二叉树 特殊的二叉树 满二叉树 完全二叉树 二叉树的性质 性质一 性质二 性质三 二叉树的存储 顺序存储 链式存储 0.前言 笔者我之前讲解的数据结构都是线性…...

ubuntu安装boost

下载官方安装包官方&#xff0c;我使用的是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 介绍 &#xff1a;简化Java AI开发的统一接口解决方案 在过去&#xff0c;使用Java开发AI应用时面临的主要困境是没有统一且标准的封装库&#xff0c;导致开发者需要针对不同的AI服务提供商分别学习和对接各自的API&#xff0c;这增加了开发难度与迁移成本。而Sprin…...

CIM系统:智慧城市的数字基石

计算机集成制造系统&#xff08;CIM&#xff09;是智慧城市建设中的关键技术&#xff0c;它通过集成多种信息技术&#xff0c;为城市提供一个全面的数字化镜像。CIM系统不仅涉及建筑信息模型&#xff08;BIM&#xff09;、地理信息系统&#xff08;GIS&#xff09;、物联网&…...

Android中Fragment的使用场景与生命周期

Android中Fragment的使用场景和生命周期 在Android应用开发中&#xff0c;Fragment是一个非常重要的概念&#xff0c;它允许开发者将Activity拆分成多个可重用的UI组件&#xff0c;从而提供灵活的UI设计&#xff0c;简化Activity的复杂性&#xff0c;并适应不同的屏幕尺寸和方…...

输入网址后,浏览器是如何高效渲染出网页的?

当你打开浏览器,输入一个网址并按下回车,接下来发生的一切仿佛都在瞬间完成——网页很快加载出来,内容、图片、动画一应俱全,像魔法一样。然而,这背后却是一个复杂而高效的协作过程,涉及到浏览器内核的多个组件共同工作,特别是渲染线程的协调作用。那么,浏览器究竟是如…...

springboot单文件,多文件下载方式

简单大文件下载&#xff1a; /*** 下载大文件* 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 语言“编译与解释并存”&#xff1f; JIT原理JVM 架构简览JIT 编译流程JIT 编译器的实现优化策略方法内联逃逸分析 JIT 在Java中&#xff0c;JIT&#xff08;Just-In-Time&#xff09;编译器是Java虚拟机&#xff08;JVM&#xff09;的一个重要组成…...

线下陪玩导游系统软件源码,家政预约服务源码(h5+小程序+app)

游戏陪玩系统源码陪玩小程序源码搭建基于PHP&#xff0b;MySQL陪玩系统app源码陪玩系统定制开发服务、成品陪玩系统源码 系统基于Nginx或者Apache PHP7.3 数据库mysql5.6 前端为uniapp-vue2.0 后端为thinkphp6 有域名授权加密&#xff0c;其他开源可二开 演示源码下载 开…...

模拟退火算法最常见知识点详解与原理简介控制策略

章节目录 模拟退火算法简介与原理 算法的基本流程与步骤 关键参数与控制策略 模拟退火算法的应用领域 如何学习模拟退火算法 资源简介与总结 一、模拟退火算法简介与原理 重点详细内容知识点总结 1. 模拟退火算法简介 模拟退火算法&#xff08;Simulated Annealing, SA&#x…...

C语言高效内存管理:对齐、缓存与位域

C语言高效内存管理&#xff1a;对齐、缓存与位域 一、内存对齐 1. 内存对齐的概念 内存对齐&#xff08;Memory Alignment&#xff09;是指数据在内存中存储时&#xff0c;其起始地址遵循特定的规则&#xff0c;使得数据能够被高效地访问。CPU通常以固定的字节数&#xff08…...

ES操作指南

# Creating a text file with the described Elasticsearch operations. es_operations """ Elasticsearch 基本操作语法&#xff1a; 1. 索引文档 (Index Documents): 自动生成 ID: POST /index_name/_doc { "field1": "value1", "…...

业务系统对接大模型的基础方案:架构设计与关键步骤

业务系统对接大模型&#xff1a;架构设计与关键步骤 在当今数字化转型的浪潮中&#xff0c;大语言模型&#xff08;LLM&#xff09;已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中&#xff0c;不仅可以优化用户体验&#xff0c;还能为业务决策提供…...

嵌入式学习笔记DAY33(网络编程——TCP)

一、网络架构 C/S &#xff08;client/server 客户端/服务器&#xff09;&#xff1a;由客户端和服务器端两个部分组成。客户端通常是用户使用的应用程序&#xff0c;负责提供用户界面和交互逻辑 &#xff0c;接收用户输入&#xff0c;向服务器发送请求&#xff0c;并展示服务…...

STM32HAL库USART源代码解析及应用

STM32HAL库USART源代码解析 前言STM32CubeIDE配置串口USART和UART的选择使用模式参数设置GPIO配置DMA配置中断配置硬件流控制使能生成代码解析和使用方法串口初始化__UART_HandleTypeDef结构体浅析HAL库代码实际使用方法使用轮询方式发送使用轮询方式接收使用中断方式发送使用中…...

[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.

ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #&#xff1a…...

【1】跨越技术栈鸿沟:字节跳动开源TRAE AI编程IDE的实战体验

2024年初&#xff0c;人工智能编程工具领域发生了一次静默的变革。当字节跳动宣布退出其TRAE项目&#xff08;一款融合大型语言模型能力的云端AI编程IDE&#xff09;时&#xff0c;技术社区曾短暂叹息。然而这一退场并非终点——通过开源社区的接力&#xff0c;TRAE在WayToAGI等…...

当下AI智能硬件方案浅谈

背景&#xff1a; 现在大模型出来以后&#xff0c;打破了常规的机械式的对话&#xff0c;人机对话变得更聪明一点。 对话用到的技术主要是实时音视频&#xff0c;简称为RTC。下游硬件厂商一般都不会去自己开发音视频技术&#xff0c;开发自己的大模型。商用方案多见为字节、百…...

Element-Plus:popconfirm与tooltip一起使用不生效?

你们好&#xff0c;我是金金金。 场景 我正在使用Element-plus组件库当中的el-popconfirm和el-tooltip&#xff0c;产品要求是两个需要结合一起使用&#xff0c;也就是鼠标悬浮上去有提示文字&#xff0c;并且点击之后需要出现气泡确认框 代码 <el-popconfirm title"是…...

持续交付的进化:从DevOps到AI驱动的IT新动能

文章目录 一、持续交付的本质&#xff1a;从手动到自动的交付飞跃关键特性案例&#xff1a;电商平台的高效部署 二、持续交付的演进&#xff1a;从CI到AI驱动的未来发展历程 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/101f72defaf3493ba0ba376bf09367a2.png)中国…...

Java高级 |【实验八】springboot 使用Websocket

隶属文章&#xff1a;Java高级 | &#xff08;二十二&#xff09;Java常用类库-CSDN博客 系列文章&#xff1a;Java高级 | 【实验一】Springboot安装及测试 |最新-CSDN博客 Java高级 | 【实验二】Springboot 控制器类相关注解知识-CSDN博客 Java高级 | 【实验三】Springboot 静…...

2025-06-08-深度学习网络介绍(语义分割,实例分割,目标检测)

深度学习网络介绍(语义分割,实例分割,目标检测) 前言 在开始这篇文章之前&#xff0c;我们得首先弄明白&#xff0c;什么是图像分割&#xff1f; 我们知道一个图像只不过是许多像素的集合。图像分割分类是对图像中属于特定类别的像素进行分类的过程&#xff0c;即像素级别的…...