假设有一个User类,包含userName和score两个字段:

public class User {
    private String userName;
    private int score;

    public User(String userName, int score) {
        this.userName = userName;
        this.score = score;
    }

    public String getUserName() {
        return userName;
    }

    public int getScore() {
        return score;
    }
}

可以按照以下方式对User列表进行分组和排序:

List<User> userList = Arrays.asList(
        new User("Bob", 90),
        new User("Alice", 80),
        new User("Bob", 70),
        new User("David", 85),
        new User("Alice", 95)
);

Map<String, List<User>> userMap = userList.stream()
        .collect(Collectors.groupingBy(User::getUserName));

userMap.values().forEach(users -> users.sort(Comparator.comparingInt(User::getScore)));

userMap.forEach((userName, users) -> {
    System.out.println("User name: " + userName);
    users.forEach(user -> System.out.println("Score: " + user.getScore()));
});

首先使用stream的groupingBy方法按照userName进行分组,得到一个Map<String, List>。然后对每个分组中的User列表进行排序,使用sort方法和Comparator.comparingInt方法。最后遍历Map,输出每个分组的userName和对应的score列表。

写一个java8 java stream 代码 先按照 userName 分组 ,然后按照 score 字段排序

原文地址: https://www.cveoy.top/t/topic/xeZ 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录