(java) List 类型的指定对象的属性来排序
java 8以上的版本:
User实体类:
class User {
private Integer id;
private String userName;
public User(Integer id, String userName) {
this.id = id;
this.userName = userName;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", userName='" + userName + '\'' +
'}';
}
}
按照User的id属性来排序:
@Test
void testDao() {
List<User> list = new ArrayList<>();
list.add(new User(1, "aa"));
list.add(new User(3, "bb"));
list.add(new User(8, "cc"));
list.add(new User(2, "dd"));
list.add(new User(4, "ee"));
System.out.println("--------排序前--------");
for (User user : list) {
System.out.println(user);
}
System.out.println("--------排序前--------");
//降序
list.sort(Comparator.comparing(User::getId).reversed());
System.out.println("--------降序--------");
for (User user : list) {
System.out.println(user);
}
System.out.println("--------降序--------");
//升序
list.sort(Comparator.comparing(User::getId));
System.out.println("--------升序--------");
for (User user : list) {
System.out.println(user);
}
System.out.println("--------升序--------");
}
运行结果:
--------排序前--------
User{id=1, userName='aa'}
User{id=3, userName='bb'}
User{id=8, userName='cc'}
User{id=2, userName='dd'}
User{id=4, userName='ee'}
--------排序前--------
--------降序--------
User{id=8, userName='cc'}
User{id=4, userName='ee'}
User{id=3, userName='bb'}
User{id=2, userName='dd'}
User{id=1, userName='aa'}
--------降序--------
--------升序--------
User{id=1, userName='aa'}
User{id=2, userName='dd'}
User{id=3, userName='bb'}
User{id=4, userName='ee'}
User{id=8, userName='cc'}
--------升序--------
```