A Car有多个制造商,我想收集所有制造商Set.
例如:
class Car {
String name;
List<String> manufactures;
}
object sedan -> { ford, gm, tesla }
object sports -> { ferrari, tesla, bmw }
object suv -> { ford, bmw, toyota }
Run Code Online (Sandbox Code Playgroud)
现在,我需要创建包含所有制造商的输出(没有冗余)
我试过了:
carList.stream().map(c -> c.getManufacturers()).collect(Collectors.toSet());
Run Code Online (Sandbox Code Playgroud)
这给了我Set的ListS,但我需要摆脱嵌套的,只是建立一个单一的Set(非嵌套).
[编辑]如果某些对象对制造商具有"空"值并且我们想要阻止NPE怎么办?
用途flatMap:
Set<String> manufactures =
carList.stream()
.flatMap(c -> c.getManufacturers().stream())
.collect(Collectors.toSet());
Run Code Online (Sandbox Code Playgroud)
如果你想避免Car具有S- null制造,添加过滤器:
Set<String> manufactures =
carList.stream()
.filter(c -> c.getManufacturers() != null)
.flatMap(c -> c.getManufacturers().stream())
.collect(Collectors.toSet());
Run Code Online (Sandbox Code Playgroud)