写一个java8 java stream 代码 先按照 userName 分组 ,然后按照 score 字段排序
假设有一个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
原文地址: https://www.cveoy.top/t/topic/xeZ 著作权归作者所有。请勿转载和采集!