Map集合体系——遍历,HashMap,TreeMap,LikedHashMap

 认识Map集合

 Map集合体系特点

方法

代码示例

package com.zz.Map;import java.util.*;public class Test {public static void main(String args[]){Map<String, Integer> map = new HashMap <>();//经典代码,按照键 无序 不重复 无索引map.put("手表", 100);map.put("手表", 134);//后面重复的数据会覆盖前面的数据(键)map.put("手机", 243);System.out.println(map);System.out.println("=====");Map<Integer, String> map1 = new TreeMap <>();//可排序,不重复,无索引map1.put(23, "java");map1.put(400, "cat");map1.put(35, "dog");System.out.println(map1);//2.public int size()获取集合的大小System.out.println(map.size());//3.public void clear()清空集合//map.clear();System.out.println(map);//4.public boolean isEmpty():判断集合是否为空,为空则返回true,反之System.out.println(map.isEmpty());//5.public V get(Object key)根据键获取对应值,不存在该键,则返回nullint v1 = map.get("手表");System.out.println(v1);//6.public V remove(Object key)根据键删除整个元素(删除键会返回键的值)System.out.println(map.remove("手表"));System.out.println(map);//7.public boolean containsKey(Object key)判断是否包含某个键,为真返回true,否则返回falseSystem.out.println(map.containsKey("手机"));//trueSystem.out.println(map.containsKey("手表"));//false//8.public boolean containsValue(Object value):判断是否包含某个值System.out.println(map.containsValue(2));//falseSystem.out.println(map.containsValue(243));//true//9.public Set<K> keySet():获取Map集合的全部键Set<String> keys = map.keySet();System.out.println(keys);//10.public Collection<V> values():获取Map集合的全部值Collection<Integer> values = map.values();System.out.println(values);//11.把其他Map集合的数据全部导入到自己的集合中来(扩展)Map<String, Integer> map2 = new HashMap <>();map2.put("java", 10);map2.put("操作系统", 20);Map<String, Integer> map3 = new HashMap <>();map3.put("数据库", 12);map3.put("计算机组成原理", 89);map2.putAll(map3);//putAll 把map3中的元素全部导入一份到map2集合中System.out.println(map2);System.out.println(map3);}
}

遍历

方式一:键找值 

package com.zz.Map.Map;import java.util.HashMap;
import java.util.Map;
import java.util.Set;public class Test2 {public static void main(String args[]){//准备一个Map集合Map<String, Double> map = new HashMap<>();map.put("牛魔王", 187.4);map.put("铁扇公主", 170.4);map.put("孙悟空", 156.7);map.put("唐僧", 179.4);System.out.println(map);//获取所有键Set<String> keys = map.keySet();System.out.println(keys);//根据键获取对应值for(String key : keys){double value = map.get(key);System.out.println(key + "=>" + value);}}
}

方式二:键值对

 

 //2.调用Map集合提供entrySet方法,把Map集合转换成键值对类型的Set集合Set<Map.Entry<String, Double>> entries = map.entrySet();for(Map.Entry<String, Double> entry : entries){String key = entry.getKey();double value = entry.getValue();System.out.println(key + "=>" + value);}

方式三:Lambda(推荐)JDK8才开始有

 //方式三Lambda遍历map.forEach((k, v)->{System.out.println(k + "->" + v);});
上面Lambda的原本代码形式 
 map.forEach(new BiConsumer <String, Double>() {@Overridepublic void accept(String k, Double v) {System.out.println(k + "=>" + v);}});

Map集合案例

 Map集合投票统计代码示例

package com.zz.Map.vote;import java.util.*;public class Test {public static void main(String args[]){//1.将80个学生选择的景点数据拿到程序中来List<String> data = new ArrayList <>();String[] selects = {"A", "B", "C", "D"};Random r = new Random();for(int i = 1; i <= 80; i++){//每次模拟一个学生选择一个景点,存入到集合中去int index = r.nextInt(4);//0,1,2,3data.add(selects[index]);}System.out.println(data);//2.开始统计每个景点的投票人数//准备一个Map集合用于统计最终的结果Map<String, Integer> result = new HashMap<>();//3.开始遍历学生选择的景点数据for (String s : data){//判断该Map集合中是否存在该景点if(result.containsKey(s)){//说明这个景点之前统计过,其值+1,存入到Map集合中result.put(s, result.get(s) + 1);}else{//说明这个景点未被统计过,存入(景点=1)result.put(s, 1);}}System.out.println(result);}
}

HashMap

根据键的哈希值计算位置,和值无关

 

LinkedHashMap集合

将键:值封装成entry对象

TreeMap集合

集合的嵌套

一个集合中嵌套另外一个集合

package com.zz.Map.province;import java.util.*;public class Test {public static void main(String args[]){//1.定义一个Map集合存储全部的省份信息,其对应的城市信息Map<String, List<String>> map = new HashMap<>();List<String> cities1 = new ArrayList <>();Collections.addAll(cities1, "南京市", "苏州市", "扬州市");map.put("江苏省", cities1);List<String> cities2 = new ArrayList <>();Collections.addAll(cities2, "抚州市", "南昌市", "九江市");map.put("江西省", cities2);System.out.println(map);//获取对应省份的城市信息List<String> list = map.get("江西省");for (String city : list) {System.out.println(city);}//获取所有省份对应的城市信息map.forEach((p, c)->{System.out.println(p + "=>" + c);});}
}

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

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

相关文章

阻塞队列、生产者消费者模型、阻塞队列的模拟实现等干货

文章目录 &#x1f490;生产者消费者模型&#x1f490;模拟实现阻塞队列&#x1f4a1;注意点一&#x1f4a1;注意点二 阻塞队列是一种“特殊”的数据结构&#xff0c;但是也遵循队列的“先进先出”特性&#xff0c;它的特殊在于&#xff1a; 阻塞队列的两个特性&#xff1a; 1…

学习基于 JavaScript 语言 的计算机界三大神书”之一 ——SICP

如何阅读“计算机界三大神书”之一 ——SICP 《计算机程序的构造和解释》&#xff08;Structure and Interpretation of Computer Programs&#xff0c;简记为SICP&#xff09;是MIT的基础课教材&#xff0c;出版后引起计算机教育界的广泛关注&#xff0c;对推动全世界大学计算…

C switch 语句

一个 switch 语句允许测试一个变量等于多个值时的情况。每个值称为一个 case&#xff0c;且被测试的变量会对每个 switch case 进行检查。 语法 C 语言中 switch 语句的语法&#xff1a; switch(expression){case constant-expression :statement(s);break; /* 可选的 */ca…

【小白友好】LeetCode 打家劫舍 III

https://leetcode.cn/problems/house-robber-iii/description/ 前言 建议还是先看看动态规划的基础题再看这个。动态规划是不刷题&#xff0c;自己100%想不出来的。 基础题&#xff1a; 最大子数组和乘积最大子数组最长递增子序列 最大升序子数组和 小白想法 现在我们想遍…

前端语义化标签及实例

常用的语义化标签的以下几种&#xff1a; header、nav、article、section、aside、footer、abbr、dfn、address、del、ins、pre、meter、progress <header> 定义文章的页眉信息 <header><h1>我的网站标题</h1><nav><ul><li><a …

[GYCTF2020]EasyThinking --不会编程的崽

看标题就知道&#xff0c;这大概率是关于thinkphp的题目。先尝试错误目录使其报错查看版本号 thinkphp v6.0.0&#xff0c;在网上搜索一下&#xff0c;这个版本有一个任意文件上传漏洞。参考以下文章。 https://blog.csdn.net/god_zzZ/article/details/104275241 先注册一个账…

【Android】位置修改相关

获取位置服务总开关状态 //获取LOCATION_MODE值&#xff0c;但adb状态下无法获取 //0为关闭&#xff0c;1 gps、2 network、3 高精度等 int state Settings.Secure.getInt(mContext.getContentResolver(),Settings.Secure.LOCATION_MODE,Settings.Secure.LOCATION_MODE_HIGH_…

three.js可以对3D模型做什么操作和交互,这里告诉你。

Three.js 提供了多种交互功能&#xff0c;可以对 3D 模型进行各种操作和交互。以下是一些常见的交互功能&#xff1a; 鼠标交互 通过鼠标事件&#xff0c;可以实现模型的拖拽、旋转、缩放等操作。例如&#xff0c;可以通过鼠标拖拽来改变模型的位置或角度。 触摸交互 对于支…

PackagesNotFoundError:学习利用报错信息找到解决方法

反思&#xff1a;之前看到报错经常是直接复制报错信息去网上搜&#xff0c;但很多情况下报错信息里其实就给出了解决方案 报错信息&#xff1a; Collecting package metadata (current_repodata.json): done Solving environment: unsuccessful initial attempt using frozen …

MySQL 篇-深入了解多表设计、多表查询

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 多表设计概述 1.1 多表设计 - 一对多 1.2 多表设计 - 一对一 1.3 多表设计 - 多对多 2.0 多表查询概述 2.1 多表查询 - 内连接 2.2 多表查询 - 外连接 2.3 多表查…

cetos7 Docker 安装 gitlab

一、gitlab 简单介绍和安装要求 官方文档&#xff1a;https://docs.gitlab.cn/jh/install/docker.html 1.1、gitlab 介绍 gitLab 是一个用于代码仓库管理系统的开源项目&#xff0c;使用git作为代码管理工具&#xff0c;并在此基础上搭建起来的Web服务平台&#xff0c;通过该平…

【C语言】指针初阶2.0版本

这篇博文我们来继续学习指针的其他内容 指针2.0 传值调用与传址调用传值调用传址调用 一维数组与指针理解数组名使用指针深入理解一维数组 二级指针指针数组二维数组与指针 传值调用与传址调用 在开始之前&#xff0c;我们需要先了解这个概念&#xff0c;后面才能够正常的学习…

Material UI 5 学习01-按钮组件

Material UI 5 学习01-按钮组件 一、安装Material UI二、 组件1、Button组件1、基础按钮2、variant属性3、禁用按钮4、可跳转的按钮5、disableElevation属性6、按钮的点击事件onClick 2、Button按钮的颜色和尺寸1、Button按钮的颜色2、按钮自定义颜色3、Button按钮的尺寸 3、图…

vulhub中ThinkPHP5 SQL注入漏洞 敏感信息泄露

漏洞原理 传入的某参数在绑定编译指令的时候又没有安全处理&#xff0c;预编译的时候导致SQL异常报错。然而thinkphp5默认开启debug模式&#xff0c;在漏洞环境下构造错误的SQL语法会泄漏数据库账户和密码 启动后&#xff0c;访问http://your-ip/index.php?ids[]1&ids[]2…

nodejs安装教程(及过程中的易错)

nodejs&#xff1a;Nodejs 是基于 Chrome 的 V8 引擎开发的一个 C 程序&#xff0c;目的是提供一个 JS 的运行环境。 npm&#xff1a;npm 是 Node Package Manager 的缩写&#xff0c;意思是 Node 的包管理系统&#xff0c;是最大的软件包仓库 下载nodejs 首先我们需要在node…

智慧城市中的数据力量:大数据与AI的应用

目录 一、引言 二、大数据与AI技术的融合 三、大数据与AI在智慧城市中的应用 1、智慧交通 2、智慧环保 3、智慧公共安全 4、智慧公共服务 四、大数据与AI在智慧城市中的价值 1、提高城市管理的效率和水平 2、优化城市资源的配置和利用 3、提升市民的生活质量和幸福感…

去除PDF论文行号的完美解决方案

去除PDF论文行号的完美解决方案 1. 遇到的问题 我想去除论文的行号&#xff0c;但是使用网上的Adobe Acrobat裁剪保存后 如何去掉pdf的行编号&#xff1f; - 知乎 (zhihu.com) 翻译时依然会出现行号&#xff0c;或者是转成word&#xff0c;这样就大大损失了格式&#xff0c…

C语言结构体的大小,结构体内存对齐

1. 结构体的大小 在自己正真了解过之前&#xff0c;一直认为结构体的大小就是结构体内部成员大小的总和。 但当你去尝试打印结构体的大小时&#xff0c;会发现事实并非如此&#xff0c;也不会像你想的那样简单。 #include <stdio.h>struct S1 {char c1;char c2;int i;…

springcloud:3.7测试线程池服务隔离

服务提供者【test-provider8001】 Openfeign远程调用服务提供者搭建 文章地址http://t.csdnimg.cn/06iz8 相关接口 测试远程调用&#xff1a;http://localhost:8001/payment/index 服务消费者【test-consumer-resilience4j8004】 Openfeign远程调用消费者搭建 文章地址http://t…

人工智能指数报告2023

人工智能指数报告2023 主要要点第 1 章 研究与开发第 2 章 技术性能第 3 章 人工智能技术伦理第 4 章 经济第 5 章 教育第 6 章 政策与治理第 7 章 多样性第 8 章 舆论 人工智能指数是斯坦福大学以人为本的人工智能研究所&#xff08;HAI&#xff09;的一项独立倡议&#xff0c…