HashMap

复制代码
package Day01;

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class HashMap1 {
    public static void main(String[] args) {
        //建一个HashMap对象
        HashMap<Student,String> map = new HashMap<>();
        //创建三个学生对象
        Student student1 = new Student("张三",20);
        Student student2 = new Student("李四",21);
        Student student3 = new Student("王五",22);
        Student student4 = new Student("李四",21);
        //向HashMap中添加对象元素和籍贯
        map.put(student1,"广东省");
        map.put(student2,"云南省");
        map.put(student3,"河北省");
        map.put(student4,"河南省");
        //对元素遍历
        Set<Map.Entry<Student, String>> entries = map.entrySet();
        for(Map.Entry<Student,String> entry:entries){
            Student key = entry.getKey();
            String name = key.getName();
            int age = key.getAge();
            System.out.println(name+","+age+"="+entry.getValue());
        }

    }
}

核心点:如果HashMap的键位置存储的是自定义对象,需要重写equals和hashcode

复制代码
package Day01;

import java.util.*;

public class HashMap2 {
    public static void main(String[] args) {
        //统计ABCD景点想去的人数
        //创建HashMap集合
        HashMap<String,Integer> map = new HashMap<>();
        ArrayList<String> list = new ArrayList<>();
        Collections.addAll(list, "B", "C", "D","A","B","C","A","A","B","C","A","B");
        //遍历集合
        //生成对象的单列数组
        for(int i=0;i<list.size();i++){
            if(map.containsKey(list.get(i))){
                int i1 = map.get(list.get(i)) + 1;
                map.put(list.get(i),i1);
            }else {
                map.put(list.get(i),1);
            }
        }
        //计算集合中最大值
        Set<Map.Entry<String, Integer>> entries = map.entrySet();
        int MaxValue = 0;
        for(Map.Entry<String,Integer> entry:entries){
            if(entry.getValue()>MaxValue){
                MaxValue = entry.getValue();
            }
        }
        //因为可能存在两个键值相同的情况
        for(Map.Entry<String,Integer> entry:entries){
            if(entry.getValue()==MaxValue){
                System.out.println(entry.getKey()+" "+entry.getValue());
            }
        }
    }
}
相关推荐
唐青枫15 小时前
Java JDBC 实战指南:从 Connection 到事务和连接池
java
一个做软件开发的牛马16 小时前
MyBatis-Plus 从零实战:完整搭建可运行 Demo,BaseMapper 零 SQL、Wrapper 条件构造、分页插件与代码生成器详解
java·后端
用户37215742613516 小时前
Java 处理 PDF 图片:提取 PDF 中的图片,并压缩 PDF 图片体积
java
用户37215742613517 小时前
Java 打印 Word 文档:从基础打印到高级设置
java
用户3521802454751 天前
当 Prompt 学会"热更新":Spring Boot × Nacos3 AI 实战
java·spring boot·ai编程
东坡白菜1 天前
破局全栈:一个前端开发的Java入门实战记录(1)
java·全栈
唐青枫1 天前
Java Tomcat 实战指南:从 Servlet 容器到 Spring Boot 部署
java
wsaaaqqq1 天前
roudan:自由选择实体、灵活操作数据、快速写入数据库的 Java 框架
java
plainGeekDev2 天前
null 判断 → Kotlin 可空类型
android·java·kotlin
糖拌西瓜皮2 天前
Java开发者视角:深入理解Node.js异步编程模型
java·后端·node.js