Java 8 menyediakan metode api utilitas yang berbeda untuk membantu kami mengurutkan aliran dengan lebih baik.
Jika daftar Anda adalah daftar Integer (atau Double, Long, String dll.,) Maka Anda cukup mengurutkan daftar dengan komparator default yang disediakan oleh java.
List<Integer> integerList = Arrays.asList(1, 4, 3, 4, 5);
Membuat komparator dengan cepat:
integerList.stream().sorted((i1, i2) -> i1.compareTo(i2)).forEach(System.out::println);
Dengan pembanding default yang disediakan oleh java 8 ketika tidak ada argumen yang diteruskan ke sort ():
integerList.stream().sorted().forEach(System.out::println);
Jika Anda ingin mengurutkan daftar yang sama dalam urutan terbalik:
integerList.stream().sorted(Comparator.reverseOrder()).forEach(System.out::println);
Jika daftar Anda adalah daftar objek yang ditentukan pengguna, maka:
List<Person> personList = Arrays.asList(new Person(1000, "First", 25, 30000),
new Person(2000, "Second", 30, 45000),
new Person(3000, "Third", 35, 25000));
Membuat komparator dengan cepat:
personList.stream().sorted((p1, p2) -> ((Long)p1.getPersonId()).compareTo(p2.getPersonId()))
.forEach(person -> System.out.println(person.getName()));
Menggunakan metode Comparator.comparingLong () (Kami telah membandingkanDouble (), membandingkanInt () metode juga):
personList.stream().sorted(Comparator.comparingLong(Person::getPersonId)).forEach(person -> System.out.println(person.getName()));
Menggunakan metode Comparator.comparing () (metode Generik yang membandingkan berdasarkan metode pengambil yang disediakan):
personList.stream().sorted(Comparator.comparing(Person::getPersonId)).forEach(person -> System.out.println(person.getName()));
Kita bisa melakukan chaining juga menggunakan metode thenComparing ():
personList.stream().sorted(Comparator.comparing(Person::getPersonId).thenComparing(Person::getAge)).forEach(person -> System.out.println(person.getName()));
Kelas orang
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;
}
}
list.sort(Comparator.comparing(o -> o.getItem().getValue()));
baru bagiku. Bagus!