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());
            }
        }
    }
}
相关推荐
callJJ20 分钟前
Spring Data Redis 两种编程模型详解:同步 vs 响应式
java·spring boot·redis·python·spring
小郑加油23 分钟前
python学习Day12:pandas安装与实际运用
开发语言·python·学习
AC赳赳老秦24 分钟前
投标合规提效:用 OpenClaw 实现标书 / 合同自动审核、关键词校验、格式优化,降低废标风险
开发语言·前端·python·eclipse·emacs·deepseek·openclaw
KuaCpp1 小时前
C++面向对象(速过复习版)
开发语言·c++
wbs_scy1 小时前
Linux线程同步与互斥(三):线程同步深度解析之POSIX 信号量与环形队列生产者消费者模型,从原理到源码彻底吃透
java·开发语言
2zcode1 小时前
基于MATLAB元胞自动机(CA)的AZ80A镁合金动态再结晶(DRX)过程模拟
开发语言·matlab·动态再结晶
iCxhust2 小时前
微机原理实践教程(C语言篇)---A001闪烁灯
c语言·开发语言·汇编·单片机·嵌入式硬件·51单片机·微机原理
MATLAB代码顾问2 小时前
Python实现蜂群算法优化TSP问题
开发语言·python·算法
jinanwuhuaguo3 小时前
(第三十三篇)五月的文明奠基:OpenClaw 2026.5.2版本的文明级解读
android·java·开发语言·人工智能·github·拓扑学·openclaw
xmjd msup3 小时前
spring security 超详细使用教程(接入springboot、前后端分离)
java·spring boot·spring