gpt4 book ai didi

java - 如何在 Java 8 中压缩以下内容

转载 作者:搜寻专家 更新时间:2023-10-31 19:59:47 24 4
gpt4 key购买 nike

一辆 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());

这给了我 ListSet,但我需要摆脱嵌套,只创建一个 Set(非嵌套).

[编辑] 如果某些对象对制造商具有“空”值并且我们想要防止 NPE 怎么办?

最佳答案

使用flatMap:

Set<String> manufactures =
carList.stream()
.flatMap(c -> c.getManufacturers().stream())
.collect(Collectors.toSet());

如果你想避免 Carnull 制造商,添加一个过滤器:

Set<String> manufactures =
carList.stream()
.filter(c -> c.getManufacturers() != null)
.flatMap(c -> c.getManufacturers().stream())
.collect(Collectors.toSet());

关于java - 如何在 Java 8 中压缩以下内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48190926/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com