I have objects
Person{
    String name;  
    int age;
    float gradeAverage;
    }
Is there an easy way to sort
Person[] ArrayOfPersons
by age?
Do I have to use Comparable or Comparator? I don't fully understand them.
Just for completeness, when using Java 8, you can use Comparator.comparing to create a simple comparator for some attribute, e.g. Comparator.comparing(Person::getAge), or using lambda, like Comparator.comparing(p -> p.age), if there is not getter method for the age.
This makes it particularly easy to chain comparators for different attributes, using thenComparing, e.g. for sorting primarily by age, and then by name in case of ties:
Comparator.comparing(Person::getAge).thenComparing(Person::getName)
Combine that with Arrays.sort, and you are done.
Arrays.sort(arrayOfPersons, Comparator.comparing(Person::getAge));
                        You can check for age using a getter in your loop
for (int i = 0 ; i < persons.length - 1; i++) {
    Person p = persons[i];
    Person next =  persons[i+1];
    if(p.getAge() > next.getAge()) {
        // Swap
    }
}
However implementing Comparable is the convenient way
class Person implements Comparable<Person> {
    String name;  
    int age;
    float gradeAverage;
    public int compareTo(Person other) {
        if(this.getAge() > other.getAge())
            return 1;
        else if (this.getAge() == other.getAge())
            return 0 ;
        return -1 ;
    }
    public int getAge() {
        return this.age ;
    }
}
You can check Comparable documentation also
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With