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);});}
}
相关文章:

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("…...

docker mysql主从复制
新建主服务器容器实例3301 mysql 主 3301 docker run -p 3301:3306 --name mysql-master \ -v /mydata/mysql-master/log:/var/log/mysql \ -v /mydata/mysql-master/data:/var/lib/mysql \ -v /mydata/mysql-master/conf:/etc/mysql \ -v /home/mysql/mysql-files:/var/lib/…...

iOS 自动化测试踩坑(一): 技术方案、环境配置与落地实践
移动端的自动化测试,最常见的是 Android 自动化测试,我个人觉得 Android 的测试优先级会更高,也更开放,更容易测试;而 iOS 相较于 Android 要安全稳定的多,但也是一个必须测试的方向,这个系列文…...

Redis的事务
在 Redis 中,事务(Transaction)是一组命令的集合,可以作为一个单独的操作来执行,保证这组命令要么全部执行成功,要么全部执行失败,具有原子性。在 Redis 中,事务是通过 MULTI、EXEC、…...

4.2 比多数opencv函数效果更好的二值化(python)
在这里之间写代码: import numpy as np import torch import torch.nn as nn import cv2#1.silu激活函数 class SiLU(nn.Module):staticmethoddef forward(x):return x*torch.sigmoid(x)#2.获得轨道的类 def railway_classes3(img,x1,x2,y1,y2):img2 img[x1:x2, y…...

webpack打包一个文件,做了哪些事情
用webpack打包一个文件,在webpack内部做了哪些事情,用代码详细介绍一下 当你使用 Webpack 打包一个文件时,Webpack 内部会进行一系列操作来实现模块加载、代码转换、依赖分析、模块打包等功能。以下是使用 Webpack 打包一个简单 JavaScript …...

设计模式学习笔记 - 设计原则 - 6.KISS原则和YAGNI原则
前言 今天,将两个设计原则:KISS 原则和 YANGI 原则。其中,KISS 原则比较经典,耳熟能详,但 YANGI 你可能没怎么听过,不过它理解起来也不难。 理解这个两个原则的时候,经常会有一个共同的问题&a…...

【Vue3-vite】动态导入路由
route文件结构 router moduleindex.ts 路由定义 // 需要导入的路由如下: const routes [{path: /manage,name: manage,component: () > import(/views/home/index.vue),children: manageRoutes,}]index.ts实现从module中自动导入 // 动态导入 const routeFil…...

C++——string类
前言:哈喽小伙伴们,从这篇文章开始我们将进行若干个C中的重要的类容器的学习。本篇文章将讲解第一个类容器——string。 目录 一.什么是string类 二.string类常见接口 1.string类对象的常见构造 2.string类对象的容量操作 3. string类对象的访问及遍…...

进制转换md5绕过 [安洵杯 2019]easy_web1
打开题目 在查看url的时候得到了一串类似编码的东西,源码那里也是一堆base64,但是转换成图片就是网页上我们看见的那个表情包 ?imgTXpVek5UTTFNbVUzTURabE5qYz0&cmd 我们可以先试把前面的img那串解码了 解码的时候发现长度不够,那我们…...

.kat6.l6st6r勒索病毒的最新威胁:如何恢复您的数据?
导言: 在当今数字化时代,数据安全变得至关重要。然而,随着网络威胁不断增加,勒索病毒已成为企业和个人面临的严重威胁之一。其中,.kat6.l6st6r勒索病毒是最新的变种之一,它能够加密您的数据文件࿰…...

Day 6.有名信号量(信号灯)、网络的相关概念和发端
有名信号量 1.创建: semget int semget(key_t key, int nsems, int semflg); 功能:创建一组信号量 参数:key:IPC对像的名字 nsems:信号量的数量 semflg:IPC_CREAT 返回值:成功返回信号量ID…...

MySQL 常用优化方式
MySQL 常用优化方式 sql 书写顺序与执行顺序SQL设计优化使用索引避免索引失效分析慢查询合理使用子查询和临时表列相关使用 日常SQL优化场景limit语句隐式类型转换嵌套子查询混合排序查询重写 sql 书写顺序与执行顺序 (7) SELECT (8) DISTINCT <select_list> (1) FROM &…...

算法刷题day22:双指针
目录 引言概念一、牛的学术圈I二、最长连续不重复序列三、数组元素的目标和四、判断子序列五、日志统计六、统计子矩阵 引言 关于这个双指针算法,主要是用来处理枚举子区间的事,时间复杂度从 O ( N 2 ) O(N^2) O(N2) 降为 O ( N ) O(N) O(N) …...

山人求道篇:八、模型的偏差与交易认知
原文引用https://mp.weixin.qq.com/s/xvxatVseHK62U7aUXS1B4g “ CTA策略一波亏完全年,除了交易执行错误导致的以外,这类策略都是多因子策略,一般会用机器学习组合多因子得出一个信号来进行交易。规则型策略几乎不会出现一波做反亏完全年的情况。这是有以下几个原因的: 多…...

MySQL 元数据锁及问题排查(Metadata Locks MDL)
"元数据"是用来描述数据对象定义的,而元数据锁(Metadata Lock MDL)即是加在这些定义上。通常我们认为非锁定一致性读(简单select)是不加锁的,这个是基于表内数据层面,其依然会对表的元…...

JS中的函数
1、函数形参的默认值 JavaScript函数有一个特别的地方,无论在函数定义中声明了多少形参,都可以传入任意数量的参数,也可以在定义函数时添加针对参数数量的处理逻辑,当已定义的形参无对应的传入参数时,为其指定一个默认…...

微信小程序开发常用的布局
在微信小程序开发中,常用的布局主要包括以下几种: Flex 布局:Flex 布局是一种弹性盒子布局,通过设置容器的属性来实现灵活的布局方式。它可以在水平或垂直方向上对子元素进行对齐、排列和分布。Flex 布局非常适用于创建响应式布局…...

Effective C++ 学习笔记 条款10 令operator=返回一个reference to *this
关于赋值,有趣的是你可以把它们写成连锁形式: int x, y, z; x y z 15; // 赋值连锁形式同样有趣的是,赋值采用右结合律,所以上述连锁赋值被解析为: x (y (z 15));这里15先被赋值给z,然后其结果&…...

算法简单试题
一、选择题 01.一个算法应该是( B ). A.程序 B.问题求解步骤的描述 C.要满足五个基本特性 D.A和C 02.某算法的时间复杂度为O(n),则表示该…...

CSS 自测题 -- 用 flex 布局绘制骰子(一、二、三【含斜三点】、四、五、六点)
一点 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>css flex布局-画骰子</title><sty…...

蓝桥集训之牛的学术圈 I
蓝桥集训之牛的学术圈 I 核心思想:二分 确定指数x后 判断当前c[i]是否>x(满足条件) 并记录次数同时记录 1后满足条件的个数最后取bns和m的最小值 为满足条件的元素个数ansbns为当前指数x下 满足条件的元素个数 #include <iostream>#include <cstring…...

软件设计师软考题目解析21 --每日五题
想说的话:要准备软考了。0.0,其实我是不想考的,但是吧,由于本人已经学完所有知识了,只是被学校的课程给锁在那里了,不然早找工作去了。寻思着反正也无聊,就考个证玩玩。 本人github地址…...

python读写json文件详解
在Python中,可以使用json模块来读写JSON格式的文件。下面是一个详细的示例,演示了如何读写JSON文件: import json# 写入JSON文件 data {"name": "John","age": 30,"city": "New York" }…...

#include<ros/ros.h>头文件报错
快捷键 ctrl shift B 调用编译,选择:catkin_make:build)(要先在vscode上添加扩展:ros) 可以点击配置设置为默认,修改.vscode/tasks.json 文件 修改.vscode/tasks.json 文件,否则ros.h头文件会报错 内容修改为以下内…...

mybatis单表curd笔记(尚硅谷
Mybatis 11111ibatis和mybatis不同 查询文档mybatis的日志输出id赋值输入(向sql语句传入数据单个简单类型单个实体对象多个简单类型map类型 输出数据的指定单个简单类型单个实体类型输出map类型输出list输出类型主键回显(自增长类型主键回显(…...

在线重定义-操作步骤
第一步:验证表是否能被在线重定义 验证是否能按主键重定义(默认,最后一次参数可以不加) 1 2 3 4 begin --dbms_redefinition.can_redef_table(scott,tb_cablecheck_equipment_bak); dbms_redefinition.can_redef_table(scot…...

16:00面试,16:06就出来了,问的问题过于变态了。。。
从小厂出来,没想到在另一家公司又寄了。 到这家公司开始上班,加班是每天必不可少的,看在钱给的比较多的份上,就不太计较了。没想到2月一纸通知,所有人不准加班,加班费不仅没有了,薪资还要降40%…...

基于dashscope在线调用千问大模型
前言 dashscope是阿里云大模型服务平台——灵积提供的在线API组件。基于它,无需本地加载大模型,通过在线方式访问云端大模型来完成对话。 申请API key 老规矩:要想访问各家云端大模型,需要先申请API key。 对于阿里云&#x…...

【Python】可变数据类型 不可变数据类型 || hash
🚩 WRITE IN FRONT 🚩 🔎 介绍:"謓泽"正在路上朝着"攻城狮"方向"前进四" 🔎🏅 荣誉:2021|2022年度博客之星物联网与嵌入式开发TOP5|TOP4、2021|2222年获评…...