Java 将列表List<User>按userName和nickName排序
1、定义实体类
import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; // 使用lombok简化实体类编写,也可以手动写getter/setter @Data @NoArgsConstructor @AllArgsConstructor public class User { private String userName; // 用户名 private String nickName; // 昵称 // 可以添加其他字段,如id、age等 }
2、列表排序
import java.util.ArrayList; import java.util.Comparator; import java.util.List; import java.util.stream.Collectors; public class UserListSortDemo { public static void main(String[] args) { // 1. 构建测试数据 List<User> userList = new ArrayList<>(); userList.add(new User("zhangsan", "张三")); userList.add(new User("lisi", "李四")); userList.add(new User("zhangsan", "张三2号")); userList.add(new User("wangwu", "王五")); userList.add(new User("lisi", "李四1号")); // 2. 方式1:使用Stream API排序(推荐,不修改原列表) List<User> sortedList = userList.stream() // 先按userName升序,再按nickName升序 .sorted(Comparator.comparing(User::getUserName) .thenComparing(User::getNickName)) .collect(Collectors.toList()); // 3. 方式2:直接对原列表排序(会修改原列表) userList.sort(Comparator.comparing(User::getUserName) .thenComparing(User::getNickName)); // 4. 降序排序(userName降序,nickName降序) List<User> descSortedList = userList.stream() .sorted(Comparator.comparing(User::getUserName).reversed() .thenComparing(Comparator.comparing(User::getNickName).reversed())) .collect(Collectors.toList()); // 打印排序结果 System.out.println("升序排序结果:"); sortedList.forEach(user -> System.out.println("userName: " + user.getUserName() + ", nickName: " + user.getNickName())); } }
有些事情,没经历过不知道原理,没失败过不明白奥妙,没痛苦过不了解真谛。临渊羡鱼,不如退而结网!

浙公网安备 33010602011771号