当前位置: 首页 > 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 + "次");}}
}
http://www.dtcms.com/a/174175.html

相关文章:

  • 图形化编程重塑 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服务器上部署教程
  • 已经写好论文的AI率降低
  • VTK|结合qt创建通用按钮控制显隐(边框、坐标轴、点线面)
  • 嵌入式学习--江协51单片机day1
  • 【HDLBits刷题】Verilog Language——1.Basics
  • 代码随想录算法训练营总结篇
  • Kubernetes弹性伸缩:让应用自动应对流量洪峰与低谷
  • 购物|电商购物小程序|基于微信小程序的购物系统设计与实现(源码+数据库+文档)
  • OpenKylin安装Elastic Search8
  • k8s node 内存碎片化如何优化?
  • 文件上传漏洞篇:upload-labs靶场搭建