Map 查找表
Map体现的结构是一个多行两列的表格,其中左列称为key,右列称为value.
Map总是成对保存数据,并且总是根据key获取对应的value.因此我们可以将查询的条件作为key查询对应的结果作为value保存到Map中.
Map有一个要求:key不允许重复(equals比较的结果)
java.util.Map接口,是所有Map的顶级接口,规定了Map的相关功能.
常用实现类:
java.util.HashMap:称为散列表,使用散列算法实现的Map,当今查询速度最快的数据结构.
java.util.TreeMap:使用二叉树实现的Map
package map;import java.util.HashMap;
import java.util.Map;/*** java.util.Map接口 查找表* Map体现的结构像是一个多行两列的表格,其中左列称为key,右列称为value* Map总是成对儿(key-value键值对)保存数据,并且总是根据key获取其对应的value** 常用实现类:* java.util.HashMap:称为散列表,使用散列算法实现的Map,当今查询速度最快的* 数据结构。*/
public class MapDemo {public static void main(String[] args) {Map<String,Integer> map = new HashMap<>();/*V put(K k,V v)将给定的键值对儿存入MapMap有一个要求,即:Key不允许重复(Key的equals比较)因此如果使用重复的key存入value,则是替换value操作,此时put方法的返回值就是被替换的value。否则返回值为null。*//*注意,如果value的类型是包装类,切记不要用基本类型接收返回值,避免因为自动拆箱导致的空指针*/Integer value = map.put("语文",99);System.out.println(value);//nullmap.put("数学",98);map.put("英语",97);map.put("物理",96);map.put("化学",98);System.out.println(map);value = map.put("物理",66);System.out.println(value);//96,物理被替换的值System.out.println(map);/*V get(Object key)根据给定的key获取对应的value。若给定的key不存在则返回值为null*/value = map.get("语文");System.out.println("语文:"+value);value = map.get("体育");System.out.println("体育:"+value);//nullint size = map.size();System.out.println("size:"+size);/*V remove(Object key)删除给定的key所对应的键值对,返回值为这个key对应的value*/value = map.remove("语文");System.out.println(map);System.out.println(value);/*boolean containsKey(Object key)判断当前Map是否包含给定的keyboolean containsValue(Object value)判断当前Map是否包含给定的value*/boolean ck = map.containsKey("英语");System.out.println("包含key:"+ck);boolean cv = map.containsValue(97);System.out.println("包含value:"+cv);}
}Map的遍历
Map支持三种遍历方式:
遍历所有的key
遍历所有的键值对
遍历所有的value(相对不常用)
package map;import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;/*** Map的遍历* Map提供了三种遍历方式* 1:遍历所有的key* 2:遍历每一组键值对* 3:遍历所有的value(不常用)*/
public class MapDemo2 {public static void main(String[] args) {Map<String,Integer> map = new HashMap<>();map.put("语文",99);map.put("数学",98);map.put("英语",97);map.put("物理",96);map.put("化学",98);System.out.println(map);/*遍历所有的keySet keySet()将当前Map中所有的key以一个Set集合形式返回。遍历该集合就等同于遍历了所有的key*/Set<String> keySet = map.keySet();for(String key : keySet){System.out.println("key:"+key);}/*遍历每一组键值对Set<Entry> entrySet()将当前Map中每一组键值对以一个Entry实例形式存入Set集合后返回。java.util.Map.EntryEntry的每一个实例用于表示Map中的一组键值对,其中有两个常用方法:getKey()和getValue()*/Set<Map.Entry<String,Integer>> entrySet = map.entrySet();for(Map.Entry<String,Integer> e : entrySet){String key = e.getKey();Integer value = e.getValue();System.out.println(key+":"+value);}/*JDK8之后集合框架支持了使用lambda表达式遍历。因此Map和Collection都提供了foreach方法,通过lambda表达式遍历元素。*/map.forEach((k,v)-> System.out.println(k+":"+v));/*遍历所有的valueCollection values()将当前Map中所有的value以一个集合形式返回*/Collection<Integer> values = map.values();
// for(Integer i : values){
// System.out.println("value:"+i);
// }/*集合在使用foreach遍历时并不要求过程中不能通过集合的方法增删元素。而之前的迭代器则有此要求,否则可能在遍历过程中抛出异常。*/values.forEach(i -> System.out.println("value:"+i));}
}
总结
java.util.Map 查找表
特点:体现的结构是一个多行两列的表格,其中左列称为key,右列称为value。
Map中的key不允许重复。判定重复的标准是根据key的equals方法判定的。
常用的实现类:java.util.HashMap 散列表
常用方法:
V put(K k,V v):向Map中添加一组键值对,使用重复的key存入新的value时,那么就是替换value操作。此时put方法 返回值为被替换的value。否则返回值为null。
V get(K k):根据给定的key获取对应的value。如果给定的key不存在则返回值为null
V remove(K k):根据给定key从Map中删除对应的键值对,返回值为该key对应的value。
int size():返回当前Map中的元素个数
void clear():清空Map
boolean containsKey(Object key):判断当前的Map是否包含给定的key
boolean containsValue(Object value):判断当前Map是否包含给定的value
Set keySet():遍历key使用的方法,将当前Map中所有的key以一个Set集合形式返回
Set entrySet():遍历每一组键值对的方法,将当前Map中每一组键值对(Entry实例)以一个Set集合形式返回
Collection values():遍历所有value使用的方法,将当前Map中所有的value以一个集合形式返回
forEach():基于lambda表达式遍历Map
相关文章:
Map 查找表
Map体现的结构是一个多行两列的表格,其中左列称为key,右列称为value.Map总是成对保存数据,并且总是根据key获取对应的value.因此我们可以将查询的条件作为key查询对应的结果作为value保存到Map中.Map有一个要求:key不允许重复(equals比较的结果)java.util.Map接口,是所有Map的顶…...
python--石头剪刀布游戏(列表)
本使用了下面几篇文章的知识: python(8)--列表初阶使用_码银的博客-CSDN博客 python(7)--if语句_码银的博客-CSDN博客 一、学习目标 利用列表实现石头剪刀布游戏 二、实验环境 Pycharm社区版、win11 三、代码 先贴代码,有需要的直接拿,想要进…...
Project Caliper:目标是打造最佳VR手柄
一提到Valve Index,人们很快联想到它的五指追踪VR手柄,这款支持手势追踪和体感反馈的高端VR手柄,是市面上最强大的C端VR手柄之一。尽管如此,它依然存在许多缺陷,比如配备的小型摇杆质量不佳、集成式设计不利于维修、人…...
自动驾驶:BEV开山之作LSS(lift,splat,shoot)原理代码串讲
自动驾驶:BEV开山之作LSS(lift,splat,shoot)原理代码串讲前言Lift参数创建视锥CamEncodeSplat转换视锥坐标系Voxel Pooling总结前言 目前在自动驾驶领域,比较火的一类研究方向是基于采集到的环视图像信息,去构建BEV视角…...
C# 如何实现对“属性”的扩展
目录一、为什么要扩展属性二、如何做?一、为什么要扩展属性 属性是一个类的特征,随着开发的不断升级,这种特征可能在一直变化,有时候为了向下兼容,一般属性的数量都是直接递增的。 例如:一个Person类&…...
EBS 物料属性 先后台对应关系 MTL_SYSTEM_ITEMS_B
Introductionweb The basic table mtl_system_items_b is the basic table of item in ERP system and there are a lot of columns,but I don’t know used of each column,particularly the column like %_flag. The reason of general exception may be because the ‘%_fl…...
MYSQL数据库-主从复制(原理及搭建)
文章目录1 概述2 原理3 搭建3.1 主库配置3.2 从库配置1 概述 主从复制是指将主数据库的DDL和 DML操作通过二进制日志传到从库服务器中,然后在从库上对这些日志重新执行(也叫重做),从而使得从库和主库的数据保持同步。 MySQL支持一台主库同时向多台从库进…...
3GPP-NR Band25标准定义频点和信道(3GPP V17.7.0 (2022-12))
Reference test frequencies for NR operating band n25 Table 4.3.1.1.1.25-1: Test frequencies for NRoperating band n25 and SCS 15 kHz CBW [MHz]carrierBandwidth...
微信小程序 之 原生开发
目录 一、前期预备 1. 预备知识 2. 注册账号 - 申请AppID 3. 下载小程序开发工具 4. 小程序项目结构 5. 小程序的MVVM架构 二、创建小程序项目 1. 查看注册的appId 2. 创建项目 3. 新建页面 01 - 创建text页面文件夹 02 - 新建text的page 03 - 在app.json中配置 …...
常用vim命令和vim基本使用及Linux用户的管理,用户和组相关文件
常用vim命令和vim基本使用及Linux用户的管理,用户和组相关文件1. vim 的基本介绍和使用1.1 vim的三种模式1.2 常用vim命令【小白】1.3 Vim键盘图:2. Linux用户管理2.1 添加用户2.2 删除用户2.3 修改账号3. Linux系统用户组的管理4. 用户和组相关文件4.1 …...
阿里云服务器部署前后端分离项目
阿里云服务器部署 【若依】 前后端分离项目 文章目录一、域名解析二、服务器操作系统置空三、部署方式四、需安装环境配置五、Linux服务器安装相应内容(具体安装步骤)(一)安装JDK(3种方式)使用Yum安装&…...
内核经典数据结构list 剖析
前言:linux内核中有很多经典的数据结构,list(也称list_head)为其中之一,这些数据结构都是使用C语言实,并且定义和实现都在单独的头文件list.h中。可以随时拿出来使用。list.h的定义不同linux发行版本路径不同,我们可以在/usr/incl…...
华为OD机试 - 考优选核酸检测点(Python)| 真题+思路+考点+代码+岗位
优选核酸检测点 题目 张三要去外地出差,需要做核酸,需要在指定时间点前做完核酸, 请帮他找到满足条件的核酸检测点。 给出一组核酸检测点的距离和每个核酸检测点当前的人数给出张三要去做核酸的出发时间 出发时间是 10 分钟的倍数 同时给出张三做核酸的最晚结束时间题目中…...
在魔改PLUS-F5280开发板上使用合封qsp iflash
文章目录引言硬件调整软件调整总结引言 由于目前灵动官网暂未发布正式版的PLUS-F5280开发板,可以使用现有的PLUS-F5270 v1.2开发板(下文简称PLUS-F5270开发版)替换为MM32F5280微控制器芯片,改装为PLUS-F5280开发板。本文记录了使…...
uni-app 瀑布流
效果图 一、组件 components/u-myWaterfall.vue <template><view class"u-waterfall"><view id"u-left-column" class"u-column"><slot name"left" :leftList"leftList"></slot></view&…...
华为OD机试 - 去除多余空格(Python)| 真题+思路+考点+代码+岗位
去除多余空格 题目 去除文本多余空格,但不去除配对单引号之间的多余空格。给出关键词的起始和结束下标,去除多余空格后刷新关键词的起始和结束下标。 条件约束: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oQABYuJD-1676475739950)(https://…...
MyBatis 二级缓存简单使用步骤
1、二级缓存使用 在 MyBatis 中默认二级缓存是不开启的,如果要使用需手动开启。在 mybatis-config.xml 配置文件中设置 cacheEnabled true ,配置如下: <?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE c…...
kubeadmin kube-apiserver Exited 始终起不来查因记录
kubeadmin kube-apiserver Exited 始终起不来查因记录 [rootk8s-master01 log]# crictl ps -a CONTAINER IMAGE CREATED STATE NAME ATTEMPT POD ID POD b7af23a98302e …...
论文投稿指南——中文核心期刊推荐(工程材料学)
【前言】 🚀 想发论文怎么办?手把手教你论文如何投稿!那么,首先要搞懂投稿目标——论文期刊 🎄 在期刊论文的分布中,存在一种普遍现象:即对于某一特定的学科或专业来说,少数期刊所含…...
【动态规划】背包问题题型及方法归纳
背包问题的种类 背包问题是在规定背包容量为j的前提下,每个物品对应的体积为v[i],价值为w[i],从物品0到物品i中选择物品放入背包中,找出符合某种要求的价值。 (1)背包问题种类 01背包:每种物…...
C++:std::is_convertible
C++标志库中提供is_convertible,可以测试一种类型是否可以转换为另一只类型: template <class From, class To> struct is_convertible; 使用举例: #include <iostream> #include <string>using namespace std;struct A { }; struct B : A { };int main…...
React Native 导航系统实战(React Navigation)
导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...
聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...
YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...
2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...
图表类系列各种样式PPT模版分享
图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...
企业如何增强终端安全?
在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...
GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...
Fabric V2.5 通用溯源系统——增加图片上传与下载功能
fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...
