Java HashMap 如何分组

问题描述

我们有一个学生列表,每个学生有姓名和班级两个属性。现在我们希望根据班级将学生分组,并统计每个班级的人数。我们可以通过使用Java的HashMap来解决这个问题。

解决方案

首先,我们需要定义一个学生类,包含姓名和班级属性。然后,我们可以创建一个HashMap来存储班级和学生列表的映射关系。对于每个学生,我们将其添加到对应班级的学生列表中。

public class Student {
    private String name;
    private String className;

    public Student(String name, String className) {
        this.name = name;
        this.className = className;
    }

    public String getName() {
        return name;
    }

    public String getClassName() {
        return className;
    }
}

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class GroupingExample {
    public static void main(String[] args) {
        // 创建学生列表
        List<Student> students = new ArrayList<>();
        students.add(new Student("Alice", "ClassA"));
        students.add(new Student("Bob", "ClassB"));
        students.add(new Student("Charlie", "ClassA"));
        students.add(new Student("David", "ClassB"));
        students.add(new Student("Eve", "ClassA"));

        // 创建HashMap来存储班级和学生列表的映射关系
        Map<String, List<Student>> groups = new HashMap<>();

        // 遍历学生列表,将学生分组
        for (Student student : students) {
            String className = student.getClassName();
            if (!groups.containsKey(className)) {
                groups.put(className, new ArrayList<>());
            }
            groups.get(className).add(student);
        }

        // 输出每个班级的学生人数
        for (Map.Entry<String, List<Student>> entry : groups.entrySet()) {
            String className = entry.getKey();
            List<Student> studentList = entry.getValue();
            System.out.println(className + ": " + studentList.size());
        }
    }
}

上面的代码中,我们通过遍历学生列表,将每个学生按照班级分组并存储到HashMap中。我们使用班级名称作为键,对应的学生列表作为值。如果班级不存在,我们先创建一个新的空列表,并将其放入HashMap中。然后,我们将当前学生添加到对应班级的学生列表中。最后,我们遍历HashMap,输出每个班级的学生人数。

结果展示

班级 人数
ClassA 3
ClassB 2
pie
    title 班级人数
    "ClassA": 60.0
    "ClassB": 40.0

如上表所示,我们成功地将学生分组,并统计了每个班级的人数。通过饼状图,我们可以清晰地看到每个班级的人数占比情况。

总结

通过使用Java的HashMap,我们可以轻松地将对象按照某个属性分组,并进行统计。这对于解决类似的问题非常有用。本文通过一个具体的例子,演示了如何使用HashMap分组学生,并统计每个班级的人数。希望本文能对你有所帮助。