Suppose a List, a User object is stored, there is a User object attribute age, sorted according to age:
using the list in the own sort method, which compare their rewriting method, either directly using a lambda expression, as follows
public class Test {
class User{
private String name;
private int age;
public User(String name,int age){
this.name =name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
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());
}
userList.sort(new Comparator<User>() {
@Override
public int compare(User o1, User o2) {
if (o1.getAge()>o2.getAge()) return 1;
return -1;
}
});
System.out.println("重写compare排序后:");
for (User item: userList) {
System.out.println("name:"+item.getName()+",age:"+item.getAge());
}
List<User> userList2=Lists.newArrayList(userA,userB,userC,userD);
System.out.println("排序前:");
for (User item: userList2) {
System.out.println("name:"+item.getName()+",age:"+item.getAge());
}
userList2.sort(Comparator.comparing(User::getAge));
System.out.println("lambda表达式排序后:");
for (User item: userList) {
System.out.println("name:"+item.getName()+",age:"+item.getAge());
}
}
}