Поскольку вы пытаетесь сортировать по-разному, вам нужно использовать Comparator .
Некоторые из способов, которыми вы можете сделать это, следующие:
[Создание и использование отдельных компараторов]
import java.util.Arrays;
import java.util.Comparator;
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
@Override
public String toString() {
return name + " age " + age;
}
}
class LowToHighComparator implements Comparator<Person> {
@Override
public int compare(Person p1, Person p2) {
return Integer.compare(p1.getAge(), p2.getAge());
}
}
class HighToLowComparator implements Comparator<Person> {
@Override
public int compare(Person p1, Person p2) {
return Integer.compare(p2.getAge(), p1.getAge());
}
}
public class Main {
public static void main(String[] args) {
Person[] people = { new Person("Eugine", 8), new Person("Ben", 9), new Person("John", 19),
new Person("Jairus", 5), new Person("Sofia", 13) };
Person[] lowToHigh = people.clone();
Person[] highToLow = people.clone();
Arrays.sort(lowToHigh, new LowToHighComparator());
Arrays.sort(highToLow, new HighToLowComparator());
System.out.println("Unsorted: ");
Arrays.stream(people).forEach(System.out::println);
System.out.println();
System.out.println("Low to high: ");
Arrays.stream(lowToHigh).forEach(System.out::println);
System.out.println();
System.out.println("High to low: ");
Arrays.stream(highToLow).forEach(System.out::println);
}
}
Вывод:
Unsorted:
Eugine age 8
Ben age 9
John age 19
Jairus age 5
Sofia age 13
Low to high:
Jairus age 5
Eugine age 8
Ben age 9
Sofia age 13
John age 19
High to low:
John age 19
Sofia age 13
Ben age 9
Eugine age 8
Jairus age 5
import java.util.Arrays;
import java.util.Comparator;
class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
@Override
public String toString() {
return name + " age " + age;
}
}
public class Main {
public static void main(String[] args) {
Person[] people = { new Person("Eugine", 8), new Person("Ben", 9), new Person("John", 19),
new Person("Jairus", 5), new Person("Sofia", 13) };
Person[] lowToHigh = people.clone();
Person[] highToLow = people.clone();
Arrays.sort(lowToHigh, Comparator.comparing(Person::getAge));
Arrays.sort(highToLow, Comparator.comparing(Person::getAge).reversed());
System.out.println("Unsorted: ");
Arrays.stream(people).forEach(System.out::println);
System.out.println();
System.out.println("Low to high: ");
Arrays.stream(lowToHigh).forEach(System.out::println);
System.out.println();
System.out.println("High to low: ");
Arrays.stream(highToLow).forEach(System.out::println);
}
}
Вывод:
Unsorted:
Eugine age 8
Ben age 9
John age 19
Jairus age 5
Sofia age 13
Low to high:
Jairus age 5
Eugine age 8
Ben age 9
Sofia age 13
John age 19
High to low:
John age 19
Sofia age 13
Ben age 9
Eugine age 8
Jairus age 5