java对list根据两个字段分组

import java.util.*;
import java.util.stream.Collectors;
 
public class Main {
    public static void main(String[] args) {
        List<User> users = Arrays.asList(
            new User("Alice", 30),
            new User("Bob", 20),
            new User("Alice", 25),
            new User("Charlie", 30),
            new User("Bob", 20) // 注意这里的Bob和Alice的年龄不同,但你想要基于所有属性分组,这里只是为了示例重复了Bob
        );
 
        // 根据用户名和年龄分组
        Map<String, List<User>> groupedByUserNameAndAge = users.stream()
            .collect(Collectors.groupingBy(user -> user.getName() + "_" + user.getAge())); // 使用连接符连接字符串以区分同名不同年龄的用户
 
        groupedByUserNameAndAge.forEach((key, value) -> {
            System.out.println("Key: " + key); // 输出分组的键(例如 Alice_30)
            value.forEach(user -> System.out.println(user)); // 输出分组中的用户列表
        });
    }
}

  

posted @ 2025-08-18 17:21  红尘沙漏  阅读(23)  评论(0)    收藏  举报