Java 8 fournit une utilité différente méthodes de l'api pour nous aider à trier les flux mieux.
Si votre liste est une liste de nombres Entiers(ou Double, Long, String, etc.) vous pouvez trier la liste par défaut des comparateurs fournies par java.
List<Integer> integerList = Arrays.asList(1, 4, 3, 4, 5);
La création de comparaison sur la mouche:
integerList.stream().sorted((i1, i2) -> i1.compareTo(i2)).forEach(System.out::println);
À défaut de comparaison fournis par java 8 quand aucun argument passé à sorted():
integerList.stream().sorted().forEach(System.out::println); //Natural order
Si vous souhaitez trier la liste dans l'ordre inverse:
integerList.stream().triés(Comparateur.reverseOrder()).forEach(Système d'.::println); // l'Ordre Inverse
Si votre liste est une liste de défini par l'utilisateur des objets, puis:
List<Person> personList = Arrays.asList(new Person(1000, "First", 25, 30000),
new Person(2000, "Second", 30, 45000),
new Person(3000, "Third", 35, 25000));
La création de comparaison sur la mouche:
personList.stream().sorted((p1, p2) -> ((Long)p1.getPersonId()).compareTo(p2.getPersonId()))
.forEach(person -> System.out.println(person.getName()));
À L'Aide Du Comparateur.comparingLong (), méthode(Nous avons comparingDouble(), comparingInt() les méthodes de trop):
personList.stream().sorted(Comparator.comparingLong(Person::getPersonId)).forEach(person -> System.out.println(person.getName()));
À L'Aide Du Comparateur.la comparaison de (), méthode(méthode Générique qui compare basé sur la méthode de lecture fourni):
personList.stream().sorted(Comparator.comparing(Person::getPersonId)).forEach(person -> System.out.println(person.getName()));
Nous pouvons faire le chaînage aussi l'utilisation de thenComparing() la méthode:
personList.stream().sorted(Comparator.comparing(Person::getPersonId).thenComparing(Person::getAge)).forEach(person -> System.out.println(person.getName())); //Sorting by person id and then by age.
La classe personne
public class Person {
private long personId;
private String name;
private int age;
private double salary;
public long getPersonId() {
return personId;
}
public void setPersonId(long personId) {
this.personId = personId;
}
public Person(long personId, String name, int age, double salary) {
this.personId = personId;
this.name = name;
this.age = age;
this.salary = salary;
}
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 double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
}