205. Writing a custom collector that takes/skips a given number of elements
In Problem 202, we wrote a handful of custom collectors grouped in the MyCollectors
class. Now, let’s continue our journey, and let’s try to add two more custom collectors here to take and/or keep a given number of elements from the current stream.
Let’s assume the following model and data:
public class Car {
private final String brand;
private final String fuel;
private final int horsepower;
...
}
List<Car> cars = List.of(
new Car("Chevrolet", "diesel", 350),
... // 10 more
new Car("Lexus", "diesel", 300)
);
The Stream API provides an intermediate operation named limit(long n)
, which can be used to truncate the stream to n
elements. So, if this is exactly what we want, then we can use it out of the box. For instance, we can limit the resulting stream to the first five cars, as follows:
List<Car> first5CarsLimit...