实现 Java 数组 group by sum 的流程

1. 准备数据

首先需要准备一个包含元素的数组作为输入数据。假设我们有一个包含学生姓名和对应成绩的数组,如下所示:

姓名 成绩
张三 80
李四 70
王五 90
张三 85
王五 95

2. 创建一个 Map 对象

我们可以使用 Java 中的 HashMap 类来创建一个空的 Map 对象,用于存储分组后的结果。Map 的 key 用于存储分组的依据,value 用于存储分组后的结果。在这个例子中,我们可以使用姓名作为分组的依据,将每个姓名对应的成绩进行累加。

Map<String, Integer> resultMap = new HashMap<>();

3. 遍历数组

使用 for 循环遍历数组中的每一个元素,对每个元素进行分组和累加操作。

for (int i = 0; i < array.length; i++) {
    // 分组和累加操作
}

4. 获取当前元素的分组依据

对于当前遍历到的元素,需要获取它的分组依据(在这个例子中即姓名)。

String key = array[i].getName();

5. 判断分组依据是否已存在于 Map 中

使用 containsKey() 方法判断当前分组依据是否已存在于 Map 中。

if (resultMap.containsKey(key)) {
    // 已存在,进行累加操作
} else {
    // 不存在,添加新的分组
}

6. 累加操作

如果分组依据已存在于 Map 中,需要将当前元素的值累加到已有的值上。

int sum = resultMap.get(key) + array[i].getScore();
resultMap.put(key, sum);

7. 添加新的分组

如果分组依据不存在于 Map 中,说明是第一次遇到这个分组,需要将当前元素的值作为初始值添加到 Map 中。

resultMap.put(key, array[i].getScore());

8. 输出结果

遍历完整个数组后,可以将最终的分组结果输出。

for (Map.Entry<String, Integer> entry : resultMap.entrySet()) {
    System.out.println("姓名: " + entry.getKey() + ", 总成绩: " + entry.getValue());
}

完成上述步骤后,就能够得到按照姓名分组并累加成绩的结果。

完整代码如下所示:

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

public class GroupBySumExample {
    public static void main(String[] args) {
        Student[] array = {
            new Student("张三", 80),
            new Student("李四", 70),
            new Student("王五", 90),
            new Student("张三", 85),
            new Student("王五", 95)
        };

        Map<String, Integer> resultMap = new HashMap<>();

        for (int i = 0; i < array.length; i++) {
            String key = array[i].getName();

            if (resultMap.containsKey(key)) {
                int sum = resultMap.get(key) + array[i].getScore();
                resultMap.put(key, sum);
            } else {
                resultMap.put(key, array[i].getScore());
            }
        }

        for (Map.Entry<String, Integer> entry : resultMap.entrySet()) {
            System.out.println("姓名: " + entry.getKey() + ", 总成绩: " + entry.getValue());
        }
    }
}

class Student {
    private String name;
    private int score;

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

    public String getName() {
        return name;
    }

    public int getScore() {
        return score;
    }
}

以上就是实现 Java 数组 group by sum 的完整流程,希望能够帮助到你。