JAVA黑马程序员day12--集合进阶(下部--双列集合)

在这里插入图片描述

Map

HashMap

在这里插入图片描述

练习一

在这里插入图片描述
需提前定义学生类,并重写HashMap方法(不然无法覆盖)

public class MapDemo4 {public static void main(String[] args) {//1.创建HashMap对象HashMap<Student,String> hm=new HashMap<>();//2、创建3个学生对象Student s1=new Student("zhangsan",23);Student s2=new Student("lisi",24);Student s3=new Student("wangwu",25);Student s4=new Student("wangwu",25);hm.put(s1,"天津");hm.put(s2,"北京");hm.put(s3,"福建");//被覆盖hm.put(s4,"山东");Set<Student> keys =hm.keySet();for (Student key : keys) {String value=hm.get(key);System.out.println(key+"="+value);}}
}

在这里插入图片描述

练习2

在这里插入图片描述

package day12;import java.util.*;public class MapDemo5 {public static void main(String[] args) {//1.需要先让同学们投票//定义一个数组,存储四个景点String[] arr={"A","B","C","D"};//利用随机数模拟80个同学的投票,并把投票的结果存储起来ArrayList<String> list=new ArrayList<>();Random r=new Random();for(int i=0;i<80;i++){int index=r.nextInt(arr.length);list.add(arr[index]);}//2.如果要统计的东西比较多,不方便使用计数器思想//我们可以定义map集合,利用集合进行统计HashMap<String,Integer> hm=new HashMap<>();for (String name : list) {if(hm.containsKey(name)){int count=hm.get(name);count++;//把新的次数再次添加到集合当中hm.put(name,count);}else{//不存在hm.put(name,1);}}System.out.println(hm);//3.求最大值int max=0;Set<Map.Entry<String,Integer>> entries=hm.entrySet();for (Map.Entry<String, Integer> entry : entries) {int count=entry.getValue();if(count>max){max=count;}}System.out.println(max);//4.判断哪个景点的次数和最大值一样,如果一样,打印出来for (Map.Entry<String, Integer> entry : entries) {int count=entry.getValue();if(count==max){System.out.println(entry.getKey());}}}
}

LinkedHashMap

在这里插入图片描述

TreeMap

在这里插入图片描述
TreeMap练习:
在这里插入图片描述

package day12;import java.util.TreeMap;public class TreeMapDemo {public static void main(String[] args) {/** 新的统计思想:利用Map集合进行统计* 如果题目中没有要求对结果进行排序,默认使用HashMap* 如果题目中要求对结果进行排序,请使用TreeMap** 键:表示要统计的内容* 值:表示次数* *///1.定义字符串String s="aababcabcdabcde";//2.创建集合TreeMap<Character,Integer> tm=new TreeMap<>();//3.遍历字符串得到里面的每一个字符for (int i = 0; i < s.length(); i++) {//拿着c到集合中判断是否存在//存在,表示当前字符又出现了一次//不存在,表示当前字符是第一次出现char c=s.charAt(i);if(tm.containsKey(c)){//存在//先把已经出现的次数拿出来int count=tm.get(c);//当前字符又出现了一次count++;//把自增之后的结果添加到集合当中tm.put(c,count);}else{//不存在tm.put(c,1);}}//4.遍历集合,并按照指定格式进行拼接//a(5)b(4)……//此处使用lambda表达式进行遍历//使用StringBuilder进行拼接StringBuilder sb=new StringBuilder();tm.forEach((key,value)-> sb.append(key).append("(").append(value).append(")"));System.out.print(sb);}
}

在这里插入图片描述

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

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

相关文章

C++面试记录之中望软件

上次面试体验不好&#xff0c;记录了&#xff0c;这次同样记录一次体验不好的面试&#xff0c;中望软件…直接写了名字&#xff0c;因为真的很无语&#x1f613; 记录一下我不知道的问题 忘记录音了&#x1f622; 1. main函数之前做了什么&#xff1f; 我&#xff1a;实话我…

运维面试宝典

【Linux基础篇】 1.描述Linux运行级别0-6的各自含义 0 &#xff1a;关机模式 1 &#xff1a;单用户模式 < 破解 root 密码 2 &#xff1a;无网络支持的多用户模式 3 &#xff1a;有网络支持的多用户模式&#xff08;文本模式&#xff0c;工作中最常用的模式&#xff09;…

跨境电商如何防关联?关联因素有哪些?

相信许多想要入局跨境电商小伙伴都遇到”防关联“的难题&#xff0c;想要在跨境路上驰骋无阻&#xff0c;那你一定不能忽略各平台的多账号防关联问题。下面小编为大家介绍&#xff0c;我的实操解决防关联的经验&#xff0c;往下看&#xff01; 通常防关联需要从以下因素进行考虑…

Mixin从理论到实践

mixin从理论到实践 mixin从理论到实践一、什么是mixin二、使用mixin三、mixin的合并策略四、mixin辨析五、个人实践 mixin从理论到实践 一、什么是mixin mixin混入 — Vue.js (vuejs.org) 官方解释&#xff1a; 混入 (mixin) 提供了一种非常灵活的方式&#xff0c;来分发 Vue …

Python模板注入(SSTI)

概念 发生在使用模板引擎解析用户提供的输入时。模板注入漏洞可能导致攻击者能够执行恶意代码或访问未授权的数据。 模板引擎可以让&#xff08;网站&#xff09;程序实现界面与数据分离&#xff0c;业务代码与逻辑代码分离。即也拓宽了攻击面&#xff0c;注入到模板中的代码可…

数据清洗:数据挖掘的前期准备工作

⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ &#x1f434;作者&#xff1a;秋无之地 &#x1f434;简介&#xff1a;CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作&#xff0c;主要擅长领域有&#xff1a;爬虫、后端、大数据…

异步FIFO设计的仿真与综合技术(4)

概述 本文主体翻译自C. E. Cummings and S. Design, “Simulation and Synthesis Techniques for Asynchronous FIFO Design 一文&#xff0c;添加了笔者的个人理解与注释&#xff0c;文中蓝色部分为笔者注或意译。前文链接&#xff1a; 异步FIFO设计的仿真与综合技术&#xf…

开源网安入选广东省网络空间安全标准化技术委员会新技术及应用安全技术工作组成员单位

近日&#xff0c;第二届广东省网络空间安全标准化技术委员会&#xff08;GD/TC 124&#xff09;&#xff08;以下简称省网安标委&#xff09;正式成立。为进一步发挥省网安标委在支撑网络强国建设、推进网络安全产业高质量发展过程中&#xff0c;示范引领核心技术攻关、创新产品…

Redis 7 第九讲 微服务集成Redis 应用篇

Jedis 理论 Jedis是redis的java版本的客户端实现&#xff0c;使用Jedis提供的Java API对Redis进行操作&#xff0c;是Redis官方推崇的方式&#xff1b;并且&#xff0c;使用Jedis提供的对Redis的支持也最为灵活、全面&#xff1b;不足之处&#xff0c;就是编码复杂度较高。 …

堆与栈的区别

OVERVIEW 栈与堆的区别一、程序内存分区中的堆与栈1.栈2.堆3.堆&栈 二、数据结构中的堆与栈1.栈2.堆 三、堆的深入1.堆插入2.堆删除&#xff1a;3.堆建立&#xff1a;4.堆排序&#xff1a;5.堆实现优先队列&#xff1a;6.堆与栈的相关练习 栈与堆的区别 自整理&#xff0c;…

Haproxy集群与常见的Web集群调度器

文章目录 1. Web集群调度器概述1.1 Web集群调度器简介1.2 调度器类别1.2.1 常用软件类1.2.2 常用硬件类 2. Haproxy软件介绍2.1 Haproxy简介2.2 支持功能2.3 主要特性2.4 常用调度算法2.4.1 轮询&#xff1a;RR&#xff08;Round Robin&#xff09;2.4.2 最小连接数&#xff1a…

基于Streamlit的应用如何通过streamlit-authenticator组件实现用户验证与隔离

Streamlit框架中默认是没有提供用户验证组件的&#xff0c;大家在基于streamlit快速实现web应用服务过程中&#xff0c;不可避免的需要配置该应用的访问范围和权限&#xff0c;即用户群体&#xff0c;一般的做法有两种&#xff0c;一种是通过用户密码验证机制&#xff0c;要求只…