我正在合并多個列表,然后使用Stream.of(..)& 然后執(zhí)行flatMap相同的操作以收集組合列表,如下所示:class Foo{ List<Entity> list1; List<Entity> list2; List<Entity> list3; //getters & setters}Foo foo = getFoo();Predicate<Entity> isExist = //various conditions on foo ;List<Bar> bars = Stream .of(foo.getList1(), foo.getList2(), foo.getList3()) .flatMap(Collection::stream) .filter(isExist) .map(entity -> getBar(entity)) .collect(Collectors.toList());第一個問題:Stream.of(..)檢查 nonNull&嗎notEmpty?如果 ans 為否,則第二個問題:我怎樣才能對我在上面的代碼中得到的所有內(nèi)容執(zhí)行nonNull¬Empty檢查?這樣每當(dāng)這三個列表發(fā)生合并時,它基本上都會忽略&來避免?listsfoonullempty listNullPointerException
1 回答

暮色呼如
TA貢獻(xiàn)1853條經(jīng)驗 獲得超9個贊
Stream
.of(foo.getList1(), foo.getList2(), foo.getList3())
.filter(Objects::nonNull)
....
或者正如 Holger 所指出并在flatMapjava-doc 中指定的那樣:
如果映射流為空,則使用空流。
因此,你可以這樣做:
Stream
.of(foo.getList1(), foo.getList2(), foo.getList3())
.flatMap(x -> x == null? null : x.stream())
添加回答
舉報
0/150
提交
取消