Java 8 lambdas 将列表分组到映射中

作者:编程家 分类: java 时间:2025-05-04

Java 8 lambdas 将列表分组到映射中

在Java 8中,引入了lambdas表达式,这使得在处理集合数据时变得更加简洁和便捷。其中一个强大的功能是将列表分组到映射中。这种功能可以在许多场景下很有用,例如统计数据,分类数据等。本文将介绍如何使用Java 8 lambdas将列表分组到映射中,并提供一个案例代码演示。

案例代码:

假设我们有一个包含学生信息的列表,每个学生都有一个姓名和年龄。我们想要将学生按照年龄进行分组,并将每个年龄组中的学生姓名存储在映射中。

java

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import java.util.stream.Collectors;

public class Main {

public static void main(String[] args) {

List students = new ArrayList<>();

students.add(new Student("Alice", 20));

students.add(new Student("Bob", 22));

students.add(new Student("Charlie", 20));

students.add(new Student("David", 22));

students.add(new Student("Eve", 21));

Map> groupedStudents = students.stream()

.collect(Collectors.groupingBy(Student::getAge,

Collectors.mapping(Student::getName, Collectors.toList())));

System.out.println(groupedStudents);

}

}

class Student {

private String name;

private int age;

public Student(String name, int age) {

this.name = name;

this.age = age;

}

public String getName() {

return name;

}

public int getAge() {

return age;

}

}

在这个例子中,我们创建了一个Student类来表示学生信息,并创建了一个包含学生对象的列表。然后,我们使用Java 8的Stream API将学生列表分组到映射中。在`groupingBy`方法中,我们指定了按照学生的年龄进行分组,并使用`mapping`方法将学生的姓名映射到一个列表中。最后,我们将分组后的映射打印出来。

分组结果:

{20=[Alice, Charlie], 21=[Eve], 22=[Bob, David]}

从结果中可以看出,学生被成功地按照年龄进行了分组,并且每个年龄组中包含了对应学生的姓名。

通过使用Java 8 lambdas,我们可以轻松地将列表分组到映射中。这种功能在处理集合数据时非常有用,可以帮助我们进行数据的统计和分类。在本文中,我们通过一个案例代码演示了如何使用Java 8 lambdas将学生按照年龄分组,将学生姓名存储在映射中。希望这篇文章能帮助你更好地理解并应用Java 8 lambdas的强大功能。