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

Javase 基础加强 —— 05 Map集合

本系列为笔者学习Javase的课堂笔记,视频资源为B站黑马程序员出品的《黑马程序员Java+AI智能辅助编程全套视频教程,java零基础入门到大牛一套通关》,章节分布参考视频教程,为同样学习Javase系列课程的同学们提供参考。

01 概述

Map集合也被叫做 “键值对集合” ,格式为{key1=value1,key2=value2,key3=value3,...}

Map集合的所有键是不允许重复的,但值可以重复,键和值是一一对应的,每一个键只能找到自己对应的值。

在这里插入图片描述

注:Map系列集合的特点都是由键决定的,值只是附属品,不做要求。

  • HashMap:无序、不重复、无索引
  • LinkedHashMap:有序、不重复、无索引
  • TreeMap:默认升序、不重复、无索引
package MapDemo;import java.util.HashMap;
import java.util.Map;public class MapDemo1 {public static void main(String[] args) {//HashMap 无序,不重复,无索引Map<String, Integer> map = new HashMap<>();map.put("张三", 1);map.put("李四", 5);map.put("王五", 7);map.put("赵六", 3);map.put(null, null);System.out.println(map);//LinkedHashMap 有序,不重复,无索引//TreeMap 默认升序,不重复,无索引}
}

02 常用方法

在这里插入图片描述

package MapDemo;import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;public class MapDemo2 {public static void main(String[] args) {Map<String, Integer> map = new HashMap<>();map.put("张三", 1);map.put("李四", 5);map.put("王五", 7);map.put("赵六", 3);map.put(null, null);System.out.println(map);//常用方法System.out.println(map.size());System.out.println(map.get("王五")); //7System.out.println(map.remove("赵六"));System.out.println(map.containsKey("王五")); //trueSystem.out.println(map.containsValue(5)); //truemap.clear();System.out.println(map.isEmpty());Set<String> keys = map.keySet();for(String key : keys){System.out.println(key);}Collection<Integer> values = map.values();for(Integer value : values){System.out.println(value);}}
}

03 遍历方式

在这里插入图片描述

① 键找值

先获取Map集合全部的键,再通过遍历键来找值

Set<String> keys = map.keySet();for(String key : keys){Integer value = map.get(key);System.out.println(key + "=" + value);
}

② 键值对

把“键值对“看成一个整体进行遍历(难度较大)

在这里插入图片描述

在这里插入图片描述

//{null=null, 李四=5, 张三=1, 王五=7, 赵六=3}
//[(null=null), (李四=5), (张三=1), (王五=7), (赵六=3)]Set<Map.Entry<String, Integer>> entries = map.entrySet();
for(Map.Entry<String, Integer> entry : entries){String key = entry.getKey();Integer value = entry.getValue();System.out.println(key + "=" + value);
}

③ Lambda表达式

map.forEach(new BiConsumer<String, Integer>() {
@Override
public void accept(String key, Integer value) {System.out.println(key + "=" + value);}
});map.forEach((key, value) -> {System.out.println(key + "=" + value);}
);

04 案例:统计投票信息

某个班级80名学生,现在需要组织秋游活动,班长提供了四个景点依次是(A、B、C、D),每个学生只能选择一个景点,请统计出最终哪个景点想去的人数最多。

在这里插入图片描述

package MapDemo;import java.util.*;public class MapTest {public static void main(String[] args) {//案例:统计投票信息calc();}public static void calc(){//1.创建一个List集合和地点名称数组,统计每个学生的目的地选择(random)List<String> locations = new ArrayList<>();String[] places = {"玉龙雪山","苍山","洱海","丽江古城"};Random r = new Random();for(int i=1; i<=80; i++){int index = r.nextInt(places.length);locations.add(places[index]);}System.out.println(locations);//2.创建一个Map集合,遍历List集合,统计每个目的地选择的次数Map<String, Integer> map = new HashMap<>();for(String location : locations){if(map.containsKey(location)){map.put(location, map.get(location)+1);;}else{map.put(location, 1);}}//3.遍历Map集合,打印Set<String> keys = map.keySet();for(String key : keys){Integer value = map.get(key);System.out.println(key + "被选择了" + value + "次");}}
}

相关文章:

  • 图形化编程重塑 IoT 边缘开发:技术革新与生态竞合新范式
  • WebRTC ICE 服务器搭建
  • 【KWDB创作者计划】_通过一篇文章了解什么是 KWDB(KaiwuDB)
  • 【Docker系列】使用格式化输出与排序技巧
  • 【旅游网站设计与实现】基于SpringBoot + Vue 的前后端分离项目 | 万字详细文档 + 源码 + 数据库 + PPT
  • SQLite基本函数
  • 在 PyTorch 中借助 GloVe 词嵌入完成情感分析
  • Linux进程8-共享内存概念机操作、shmget/shmat/shmdt/shmctl函数用法、空间大小修改
  • 普通IT的股票交易成长史--20250506午复盘
  • JVM内存模型深度解剖:分代策略、元空间与GC调优实战
  • JVM——垃圾回收
  • git的push.default配置详解
  • 使用蚁群算法求解VRPTW问题
  • debian中笔记本的省电选择auto-cpufreq
  • AI视频智能分析网关打造社区/工厂/校园/仓库智慧消防实现精准化安全管控
  • (leetcode) 力扣100 6.三数之和 (双指针)
  • 《普通逻辑》学习记录——关系命题及其推理
  • 《深入理解分布式系统》之认识分布式系统
  • C语言| 递归求1+2+...+100的和
  • Ragflow服务器上部署教程
  • 三大交易所多举措支持科创债再扩容,约160亿证券公司科创债有望近期落地
  • 网民反映“潜水时遭遇服务质量不佳”,三亚开展核查调查
  • 巴基斯坦:印度向巴3处地点发射导弹
  • 世界银行最新营商环境体检单:59个测评点,上海22项达全球最优水平
  • 城事|五一长假,哪里人最多?
  • 《中国医药指南》就“宫颈癌等论文出现男性病例”致歉:辞退涉事编辑