JavaのStreamで独自ソート #java

sortedにComparator

Streamで独自ソートするにはsortedにComparatorを渡してやればOK

List<Person> personsSortedByName = getPersons().stream()
  .sorted(new Comparator<Person>() {
    @Override
    public int compare(Person person1, Person person2) {
        return person1.getName().compareTo(person2.getName());
    }
  }).collect(Collectors.toList);

Lambdaで書けます

List<Person> personsSortedByName = getPersons().stream()
  .sorted((person1, person2) -> person1.getName().compareTo(person2.getName()))
  .collect(Collectors.toList);

Comparator#comparing が使えます

List<Person> personsSortedByName = getPersons().stream()
  .sorted(Comparator.comparing(Person::getName))
  .collect(Collectors.toList);

逆順にしたい

逆順にしたいときは Comparator#reversed を使えばOKです。

List<Person> personsSortedByName = getPersons().stream()
  .sorted(Comparator.comparing(Person::getName).reversed())
  .collect(Collectors.toList);

参考

www.task-notes.com