199. Introducing stream comparators
Let’s assume that we have the following three lists (a list of numbers, a list of strings, and a list of Car
objects):
List<Integer> nrs = new ArrayList<>();
List<String> strs = new ArrayList<>();
List<Car> cars = List.of(...);
public class Car {
private final String brand;
private final String fuel;
private final int horsepower;
...
}
Next, we want to sort these lists in a stream pipeline.
Sorting via natural order
Sorting via natural order is very simple. All we have to do is to call the built-in intermediate operation, sorted()
:
nrs.stream()
.sorted()
.forEach(System.out::println);
strs.stream()
.sorted()
.forEach(System.out::println);
If nrs
contains 1, 6, 3, 8, 2, 3, and 0, then sorted()
will produce 0, 1, 2, 3, 3, 6, and 8. So, for numbers, the natural order is the ascending order by value.
If strs
contains “book,” “old,” ...