How a property objects in the collection sorted

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());
        }
    }
}

Here Insert Picture Description

Guess you like

Origin blog.csdn.net/m0_37587333/article/details/93736595