201. Filtering a map
Let’s consider the following map:
public class Car {
private final String brand;
private final String fuel;
private final int horsepower;
...
}
Map<Integer, Car> cars = Map.of(
1, new Car("Dacia", "diesel", 100),
...
10, new Car("Lexus", "diesel", 300)
);
In order to stream a map, we can start from the entrySet()
of the Map
, values()
, or keyset()
, followed by a stream()
call. For instance, if we want to express a pipeline as Map -> Stream -> Filter -> String that returns a List<String>
containing all the electric brands, then we can rely on entrySet()
as follows:
String electricBrands = cars.entrySet().stream()
.filter(c -> "electric".equals(c.getValue().getFuel()))
.map(c -> c.getValue().getBrand())
.collect(Collectors.joining(", "));
However, as you can see, this stream pipeline doesn’t use the map’s keys. This means...