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

Map(HashMap)

Map的遍历方式(键找值)

package map;import java.util.HashMap;
import java.util.Map;
import java.util.Set;public class MapDemo {public static void main(String[] args) {Map<String, String> map = new HashMap<>();map.put("小宋", "小张");map.put("郭靖","黄蓉");Set<String> strings = map.keySet();//增强forfor (String string : strings) {String value = map.get(string);System.out.println(string + "=" + value);}//迭代器
//        Iterator<String> it = strings.iterator();
//        while (it.hasNext()){
//            String next = it.next();
//            System.out.println(next);
//        }//lambda表达式
//        strings.forEach(s -> System.out.println(s));}
}

Map集合的第二种遍历方式

//通过一个方法获取所有的键值对对象,返回一个Set集合
Set<Map.Entry<String, String>> entries = map.entrySet();
//遍历entries这个集合,去得到里面的每一个键值对对象
for (Map.Entry<String, String> entry : entries) {//利用entry调用get方法获取键值对对象String key = entry.getKey();String value = entry.getValue();System.out.println(key + "=" + value);
}

map.forEach((key, value) -> System.out.println(key + "=" + value));

Hash Map的特点

1.HashMap是Map里面的一个实现类。

2.没有额外需要学习的特有方法,直接使用Map里面的方法就可以了。

3.特点都是由键决定的:无序、不重复、无索引。

4.HashMap跟Hashset底层原理是一一样的,都是哈希表结构。

底层原理:数组+链表+红黑树

长度超过8&数组长度>=64,自动转成红黑树

1.HashMap底层是哈希表结构的

2.依赖hashcode方法和equals方法保证键的唯一

3.如果键存储的是自定义对象,需要重写hashcode和equals方法如果值存储自定义对象,不需要重写hashcode和equals方法

package map;import java.util.HashMap;
import java.util.Map;
import java.util.Set;
//核心点:HashMap的键位置如果存储的是自定义对象,需要重写hashCode和equals方法
public class MapDemo2 {public static void main(String[] args) {HashMap<Student, String> map = new HashMap<>();Student s1 = new Student("zhangsan", 20);Student s2 = new Student("lisi", 21);Student s3 = new Student("wangwu", 22);map.put(s1, "江西");map.put(s2, "江苏");map.put(s3, "浙江");System.out.println("------------------------------");Set<Student> keys = map.keySet();for (Student key : keys) {String value = map.get(keys);System.out.println(key + "=" + value);}System.out.println("------------------------------");Set<Map.Entry<Student, String>> entries = map.entrySet();for (Map.Entry<Student, String> entry : entries) {Student key = entry.getKey();String value = entry.getValue();System.out.println(key + "=" + value);}System.out.println("------------------------------");map.forEach((key, Value)-> System.out.println(key+"="+Value));}
}

求ABCD的投票个数,并且返回最大票数和最大票数持有人

package map;import java.util.*;public class MapDemo3 {public static void main(String[] args) {String[] arr = {"A","B","C","D"};ArrayList<String> list = new ArrayList<>();Random rd = new Random();for (int i = 0; i < 80; i++) {int index = rd.nextInt(arr.length);list.add(arr[index]);}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);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);for (Map.Entry<String, Integer> entry : entries) {int count = entry.getValue();if (count == max){System.out.println(entry.getKey());}}}
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • SpringBoot开发——整合Logbook进行HTTP API请求响应日志输出
  • 卫生间装修防滑石用瓷砖还是大理石好呢?
  • 算法知识点————背包问题
  • 时间序列预测学习方向总概括
  • Python基础语法(1)
  • 已知两圆的圆心半径,求交点坐标——CAD VBA 解决
  • 1-【JavaWeb】数据库基础
  • 生日贺卡录放音芯片,多段音频录音ic生产厂商,NVF04M-32minute
  • java中redis集群模式和哨兵模式的区别和联系?
  • Java:动态代理
  • CSP-CCF★★★201812-2小明放学★★★
  • Unity 热更 之 【YooAsset 热更】Unity 可以进行热更的资源管理系统,并 【Android 端简单实现·案例热更】
  • ABAP JSON处理应用
  • CKAD-CronJob
  • 伟易特发布全新一代便携式反无人机装备
  • 【mysql】环境安装、服务启动、密码设置
  • Bytom交易说明(账户管理模式)
  • ES6语法详解(一)
  • Facebook AccountKit 接入的坑点
  • JDK 6和JDK 7中的substring()方法
  • node 版本过低
  • ReactNative开发常用的三方模块
  • Spring Boot MyBatis配置多种数据库
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • 后端_MYSQL
  • 基于组件的设计工作流与界面抽象
  • 前端之Sass/Scss实战笔记
  • 浅谈Kotlin实战篇之自定义View图片圆角简单应用(一)
  • 如何用vue打造一个移动端音乐播放器
  • 微信小程序开发问题汇总
  • 系统认识JavaScript正则表达式
  • 想写好前端,先练好内功
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • shell使用lftp连接ftp和sftp,并可以指定私钥
  • 浅谈sql中的in与not in,exists与not exists的区别
  • 组复制官方翻译九、Group Replication Technical Details
  • ​​​​​​​STM32通过SPI硬件读写W25Q64
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • #Ubuntu(修改root信息)
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (6) 深入探索Python-Pandas库的核心数据结构:DataFrame全面解析
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通
  • (不用互三)AI绘画工具应该如何选择
  • (多级缓存)缓存同步
  • (附源码)ssm基于微信小程序的疫苗管理系统 毕业设计 092354
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (一)、python程序--模拟电脑鼠走迷宫
  • (一)Docker基本介绍
  • (游戏设计草稿) 《外卖员模拟器》 (3D 科幻 角色扮演 开放世界 AI VR)
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • *算法训练(leetcode)第三十九天 | 115. 不同的子序列、583. 两个字符串的删除操作、72. 编辑距离
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .NET 中的轻量级线程安全