Java对List<对象>属性进行排序

水深无声 2022-11-25 10:05 408阅读 0赞

1、首先创建一个实体类User,大概属性如下:

  1. @Getter
  2. @Setter
  3. public class User {
  4. public User(String name, Integer age) {
  5. this.name = name;
  6. this.age = age;
  7. }
  8. private String name;
  9. private Integer age;
  10. }

2、进行排序(正序):

  1. List<User> userList = new ArrayList<>();
  2. userList.add(new User("红", 35));
  3. userList.add(new User("橙", 19));
  4. userList.add(new User("黄", 25));
  5. userList.add(new User("绿", 30));
  6. userList.add(new User("青", 9));
  7. userList.add(new User("蓝", 19));
  8. userList.sort((v1, v2) -> v1.getAge().compareTo(v2.getAge()));
  9. userList.forEach(v -> {
  10. System.out.println("name:" + v.getName() + " age:" + v.getAge());
  11. });

打印结果:

  1. name:青 age9
  2. name:橙 age19
  3. name:蓝 age19
  4. name:黄 age25
  5. name:绿 age30
  6. name:红 age35

倒序就是将v1和v2换下位置:

  1. List<User> userList = new ArrayList<>();
  2. userList.add(new User("红", 35));
  3. userList.add(new User("橙", 19));
  4. userList.add(new User("黄", 25));
  5. userList.add(new User("绿", 30));
  6. userList.add(new User("青", 9));
  7. userList.add(new User("蓝", 19));
  8. userList.sort((v1, v2) -> v2.getAge().compareTo(v1.getAge()));
  9. userList.forEach(v -> {
  10. System.out.println("name:" + v.getName() + " age:" + v.getAge());
  11. });

打印结果:

  1. name:红 age35
  2. name:绿 age30
  3. name:黄 age25
  4. name:橙 age19
  5. name:蓝 age19
  6. name:青 age9

3、如果想截取前几名的数据:

  1. List<User> userList = new ArrayList<>();
  2. userList.add(new User("红", 35));
  3. userList.add(new User("橙", 19));
  4. userList.add(new User("黄", 25));
  5. userList.add(new User("绿", 30));
  6. userList.add(new User("青", 9));
  7. userList.add(new User("蓝", 19));
  8. userList.sort((v1, v2) -> v2.getAge().compareTo(v1.getAge()));
  9. List<User> users = userList.subList(0, 3);
  10. users.forEach(v -> {
  11. System.out.println("name:" + v.getName() + " age:" + v.getAge());
  12. });

打印结果:

  1. name:红 age35
  2. name:绿 age30
  3. name:黄 age25

发表评论

表情:
评论列表 (有 0 条评论,408人围观)

还没有评论,来说两句吧...

相关阅读