假设一个List中,存放的是一个User对象,User对象中有一个age属性,根据age排序:
使用list中自带的sort方法,里面自己重写compare方法,或者直接使用lambda表达式,如下
public class Test {
@Data
class User {
private String name;
private int age;
public User(String name, int age) {
this.name = name;
this.age = age;
}
}
public static void main(String[] args) {
// 创建四个实例
User userA = new Test().new User("吴俊", 30);
User userB = new Test().new User("董浩", 25);
User userC = new Test().new User("黄健雄", 27);
User userD = new Test().new User("冯普超", 30);
List<User> userList = Lists.newArrayList(userA, userB, userC, userD);
System.out.println("排序前:");
for (User item : userList) {
System.out.println("name:" + item.getName() + ",age:" + item.getAge());
}
System.out.println("重写compare排序:");
userList.sort(new Comparator<User>() {
@Override
public int compare(User o1, User o2) {
if (o1.getAge() > o2.getAge()) return 1;
return -1;
}
});
for (User item : userList) {
System.out.println("name:" + item.getName() + ",age:" + item.getAge());
}
System.out.println("排序前:");
List<User> userList2 = Lists.newArrayList(userA, userB, userC, userD);
for (User item : userList2) {
System.out.println("name:" + item.getName() + ",age:" + item.getAge());
}
System.out.println("lambda表达式排序:");
userList2.sort(Comparator.comparing(User::getAge));
for (User item : userList) {
System.out.println("name:" + item.getName() + ",age:" + item.getAge());
}
}
}
临时图片.png