Java Comparator using .reverseOrder() but with an inner class

后端 未结 4 1712
借酒劲吻你
借酒劲吻你 2021-02-05 03:42

I am creating a simple program to learn about the Java Comparator class. I have sorted an Arraylist into order but now I want to sort the list in descending order b

4条回答
  •  生来不讨喜
    2021-02-05 03:58

    Let's take a simple example we have a class Person with two fields name age and we want to sort an existing collection of persons based on their age so let's assume that we have a class Person with a constructor and add the persons into the list and then sort them unsing the method sort of collection :

    Person bachiri = new Person (17,"bachiri");
    Person taoufiq = new Person (14,"Taoufiq");
    Person abderrahman = new Person (15,"abderrahman");
    List persons =  new ArrayList<>();
    

    and this this the impelemtation of Agecomparable :

    class AgeComparator implements Comparator{
    
    
        @Override
        public int compare(Person person1, Person person2) {
            return Integer.compare(person1.getAge(),person2.getAge());
        }
    
    
    }
    

    the trick is to multiple the return method with -1 so the final result will be reversed: class AgeComparator implements Comparator{

        @Override
        public int compare(Person person1, Person person2) {
            return -1 * Integer.compare(person1.getAge(),person2.getAge());
        }
    
    
    }
    

    so now we can get a reversed result :

    Collection.sort (Persons, new AgeComparator());
    

提交回复
热议问题