作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
一辆 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
(非嵌套).
[编辑] 如果某些对象对制造商具有“空”值并且我们想要防止 NPE 怎么办?
最佳答案
使用flatMap
:
Set<String> manufactures =
carList.stream()
.flatMap(c -> c.getManufacturers().stream())
.collect(Collectors.toSet());
如果你想避免 Car
有 null
制造商,添加一个过滤器:
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/
我是一名优秀的程序员,十分优秀!