一辆汽车(Car
)有多个制造商,我想在一个 Set
中收集所有的制造商。
例如:
class Car {
String name;
List<String> manufactures;
}
object sedan -> { ford, gm, tesla }
object sports -> { ferrari, tesla, bmw }
object suv -> { ford, bmw, toyota }
现在,我需要创建一个包含所有制造商(无冗余)的输出。
我尝试过:
carList.stream().map(c -> c.getManufacturers()).collect(Collectors.toSet());
这给了我一个
List
的 Set
,但我需要消除嵌套并创建一个单一的 Set
(非嵌套)。[编辑] 如果某些对象的制造商具有“null”值,我们该如何防止NPE?
carList.stream() .flatMap(c -> c.getManufacturers().stream()) .filter(Objects::nonNull) .collect(Collectors.toSet());
- Hadi Jfilter(Objects::nonNull)
之前,c.getManufacturers().stream()
会抛出NullPointerException。 - Eran