Java的数据结构-Map集合

文章目录

  • Map概述
  • Map常用方法
  • Map遍历元素的方法
    • 1.方法一:keySet()
    • 2.方法二:entrySet()
  • HashMap

Map概述

  • 1、Map和collection没有继承关系
  • 2、Map集合以key和value的方式存储数据:键值对
  • key和value都是引用数据类型。
  • key和value都是存储对象的内存地址。
  • key起到主导的地址,value是key的一个附属品。

Map常用方法

V put(K key,V value)向Map集合中添加键值对
V get(Object key)通过Key获取value
void clear()清空Map集合
boolean containsKey(Object key)判断Map中是否包含某个Key
boolean containsValue(Object value)判断Map中是否包含某个value
boolean isEmpty()判断Map集合中元素个数是否为0
V remove(Object key)通过key删除键值对
int size()获取Map集合中键值对的个数
Set keySet()获取Map集合中所有的key(所有的键是一个set集合)
Collection values()获取Map集合中所有的value,返回一个Collection
Set<Map.Entry<K,V> entrySet>将Map集合转换成Set集合遍历key-value
public class MapTest01 {public static void main(String[] args) {Map<Integer,String> map = new HashMap<>();//1.向Map中添加key-valuemap.put(101,"zhangsan");map.put(202,"lisi");map.put(303,"wangwu");map.put(404,"zhaoliu");//2.获取添加到Map中的key-value的个数System.out.println("2.Map中所有键值对的个数:"+map.size());//3.通过key取valueString value = map.get(303);System.out.println("3.通过key取到的value为:"+value);//4.获取所有的valueCollection<String> values = map.values();System.out.println("4.values()获取Map中的所有value:"+values);//foreach valuesfor(String str : values){System.out.println("5.遍历取出:"+str);}//5.获取所有的keySet<Integer> keys = map.keySet();System.out.println("9.keySet()返回Map中所有的key:"+keys);//6.判断是否包含某个key和valueSystem.out.println("7.判断是否包含202的key的结果为:"+map.containsKey(202));System.out.println("8.判断是否包含zhaoliu的value的结果为:"+map.containsValue("leilei"));//7.通过key删除key-valuemap.remove(404);System.out.println("6.调用remove()方法后的键值对的数量:"+map.size());//8.清空Map集合map.clear();System.out.println("10.clear()后键值对的数量为:"+map.size());}
}

在这里插入图片描述

Map遍历元素的方法

1.方法一:keySet()

在这里插入图片描述

public class MapTest02Foreach {public static void main(String[] args) {Map<Integer,String> map = new HashMap<>();//1.向Map中添加key-valuemap.put(101,"zhangsan");map.put(202,"lisi");map.put(303,"wangwu");map.put(404,"zhaoliu");//2.keySet()遍历Map集合的第一种方法Set<Integer> keys = map.keySet();//2.1通过迭代器Iterator<Integer> it = keys.iterator();while(it.hasNext()){Integer key = it.next();String value = map.get(key);System.out.println("Iterator遍历:"+value);}//2.2foreachfor(Integer key : keys){System.out.println("foreach遍历:"+map.get(key));}}
}

在这里插入图片描述

2.方法二:entrySet()

在这里插入图片描述

public class MapTest02Foreach {public static void main(String[] args) {Map<Integer,String> map = new HashMap<>();//1.向Map中添加key-valuemap.put(101,"zhangsan");map.put(202,"lisi");map.put(303,"wangwu");map.put(404,"zhaoliu");//2.entrySet()遍历Map集合的第二种方法Set<Map.Entry<Integer,String>> entry = map.entrySet();//2.1迭代器Iterator<Map.Entry<Integer,String>> it1 = entry.iterator();while(it1.hasNext()){Map.Entry<Integer,String> node = it1.next();Integer key = node.getKey();String value = node.getValue();System.out.println(key+"-->"+value);}//2.2foreach//这种方式效率比较高,因为获取key和value都是直接从node对象中获取的属性值//这种方式比较合适于大数据量for(Map.Entry<Integer,String> node1 : entry){System.out.println(node1);}}
}

在这里插入图片描述

HashMap

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/2992.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(栈队列堆) 剑指 Offer 31. 栈的压入、弹出序列 ——【Leetcode每日一题】

❓ 剑指 Offer 31. 栈的压入、弹出序列 难度&#xff1a;中等 输入两个整数序列&#xff0c;第一个序列表示栈的压入顺序&#xff0c;请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如&#xff0c;序列 {1,2,3,4,5} 是某栈的压栈序列&#xff0c;序…

Appium Android ——利用 TestNG 并行执行用例

目录 前言&#xff1a; 一、测试类 二、连接两个 Android 设备或启动两个虚拟机 三、项目路径下新建两个 testng.xml 四、开启两个 appium server 五、导出依赖 六、执行测试 七、查看报告 前言&#xff1a; Appium是一个流行的移动应用自动化测试工具&#xff0c;…

使用semanage管理SELinux安全策略

semanage命令用于管理SELinux的策略&#xff0c;格式为“semanage [选项] [文件]”。 SELinux服务极大地提升了Linux系统的安全性&#xff0c;将用户权限牢牢地锁在笼子里。semanage命令可以设置文件、目录的策略&#xff0c;还可以管理网络端口、消息接口。 常用参数&#xf…

vue3+vite配置 unplugin-vue-component 找不到 Vant 组件的问题

使用 vue3 vite Vant 搭建移动端项目&#xff0c;为了避免全量引入 vant 导致打包体积过大&#xff0c;又不想一个一个组件手动导入&#xff0c;所以就选择了 vant 官方推荐的方法&#xff0c;使用 unplugin-vue-components 插件自动引入组件&#xff0c;并按需引入组件的样式…

Qgis3.16ltr+VS2017二次开发环境搭建(保姆级教程)

1.二次开发环境搭建 下载osgeo4w-setup.exeDownload QGIShttps://www.qgis.org/en/site/forusers/download.html 点击OSGeo4W Network Installer 点击下载 OSGeo4W Installer 运行程序 osgeo4w-setup.exe&#xff0c;出现以下界面&#xff0c;点击下一页。 选中install from i…

详细讲解C++的可调用对象

详细讲解C的可调用对象 在C中&#xff0c;存在“可调用对象&#xff08;Callable Obiects&#xff09;这么一个概念。准确来说&#xff0c;可调用对象有如下几种定义&#xff1a; 是一个函数指针 是一个具有 operator() 成员函数的类对象&#xff08;仿函数&#xff09; 是一…

rollup打包js库 占位符替换成文件名和行号输出日志中定位报错位置

rollup 自定义插件进行代码替换 简易版问题&#xff1a;在打包的js库中有很多日志或者error的控制台输出&#xff0c;但是打包后的js调用报错后无法从控制台看到堆栈信息&#xff0c;无法定位报错的位置是在哪个文件的哪一行需求&#xff1a;能够从报错中观察到报错在哪个文件的…

力扣206. 反转链表

给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5] 输出&#xff1a;[5,4,3,2,1]示例 2&#xff1a; 输入&#xff1a;head [1,2] 输出&#xff1a;[2,1]示例 3&#xff1a; 输入&am…

MySQL进阶

目录 一、存储引擎 1、MySQL体系结构 2、存储引擎简介 3、存储引擎特点 InnoDB MyISAM Memory 4、存储引擎选择 二、索引 1、索引概述 2、索引结构 3、索引分类 4、索引语法 5、SQL性能分析 5.1 SQL执行频率 5.2 慢查询日志 5.3 profile详情 5.4 explain执行…

k8s dev环境怎么做到本地调试

列出所有的namespace kubens切换到指定的namespace kubens dev-gmmt 查看namespace 中存在那些service kubectl get services启动链接的服务和端口 kubectl port-forward service/cmdb 8081:8081该命令的含义是将Kubernetes集群中名为"cmdb"的服务的端口8081&…

Spring-Cloud-Gateway如何自定义断言工厂?

遇到这么一个面试题&#xff1a;如何在网关做配置&#xff0c;实现只有在早晨9点到下午18点之间接口才允许访问&#xff0c;其他时间访问都是404。 我们知道网关的一个重要的作用就是路由转发&#xff0c;路由表的配置大概是这个样子: spring:cloud:gateway:routes:- id: user…

Sentinel流量规则模块(新增)

系统并发能力有限&#xff0c;比如系统A的QPS支持1个请求&#xff0c;如果太多请求过来&#xff0c;那么系统A就应该进行流量控制了&#xff0c;比如其他请求直接拒绝 新增流控规则介绍:新增流控规则窗口 1.资源名&#xff1a;默认请求路径。 2.针对来源&#xff1a;Se…

基于51单片机和proteus的温室大棚系统

此系统是基于51单片机和proteus的仿真设计&#xff0c;功能如下&#xff1a; 1. LCD1602实时显示光照/土壤湿度/温度值及设定值。 2. 按键可增减光照/土壤湿度/温度设定阈值。 3. 获取到的温度低于设定温度则打开加热设备。 4. 获取到的光照值低于设定光照值则打开补光灯。…

【SpringBoot Web开发】如何构建树形结构数据

树形结构数据 应用场景 比如我们需要构建菜单、机构树、其他业务类型树形结构 工具类 我们可以把菜单列表返回&#xff0c;获取parent_id字段等于0的节点&#xff0c;称为根节点&#xff0c;这样的节点代表一级菜单再通过根节点的主键去寻找子菜单&#xff0c;因为要有多及菜…

【iOS】编译与链接

前言 计算机语言分为机器语言、汇编语言和高级语言。 可以将高级语言分为两种&#xff1a;编译语言和解释型语言&#xff08;直译式语言&#xff09;。 解释型语言&#xff08;逐步进行解释执行&#xff09; 解释语言编写的程序在每次运行时都需要通过解释器对程序进行动态…

【区块链+体育】“数智化”的杭州亚运会,中创助力区块链技术发展

“智能”&#xff0c;是杭州亚运会的办赛理念之一。除了数字藏品开亚运先河&#xff0c;杭州亚组委充分应用区块链、大数据、人工智能等前沿技术&#xff0c;为观众提供从购票、出行、观赛到住宿、美食和旅游等“一站式”服务。 本次亚运会将全程智能陆续落到了实处&#xff0…

CSS 实现 Turbo 官网 3D 网格线背景动画

转载请注明出处&#xff0c;点击此处 查看更多精彩内容 查看 Turbo 官网 时发现它的背景动画挺有意思&#xff0c;就自己动手实现了一下。下面对关键点进行解释说明&#xff0c;查看完整代码及预览效果请 点击这里。 简单说明原理&#xff1a;使用 mask-image 遮罩绘制网格&a…

Python测试框架Pytest的基础入门

Pytest简介 Pytest is a mature full-featured Python testing tool that helps you write better programs.The pytest framework makes it easy to write small tests, yet scales to support complex functional testing for applications and libraries. 通过官方网站介绍…

ios 通过xib自定义控件

通过xib自定义控件 xib和stroyboayd对比 共同点&#xff1a; 都是用来描述软件界面 都是用interface Builder工具来编辑 本质都是转换成代码去创建控件 不同点&#xff1a; xib是轻量级的&#xff0c;用来描述局部ui界面 创建模型文件 XMGCar 自定义控件 xib 图形设计 …