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());
            }
        }
    }
}
相关推荐
卓怡学长8 小时前
m280本科生导师指导平台
java·数据库·spring·tomcat·maven·intellij-idea
python猿8 小时前
打卡Python王者归来--第30天
开发语言·python
qq_334903158 小时前
嵌入式C++驱动开发
开发语言·c++·算法
阿贵---8 小时前
C++代码规范化工具
开发语言·c++·算法
暮冬-  Gentle°8 小时前
自定义内存检测工具
开发语言·c++·算法
一直都在5728 小时前
Java死锁
java·开发语言
娇娇yyyyyy8 小时前
QT编程(15): Qt 按键事件和定时器事件
开发语言·qt
2501_945424809 小时前
C++编译期矩阵运算
开发语言·c++·算法
yy我不解释9 小时前
关于comfyui的mmaudio音频生成插件时时间不一致问题(三)
开发语言·python·ai作画·音视频·comfyui
2301_815482939 小时前
C++中的类型标签分发
开发语言·c++·算法