使用Java8将值和值列表合并为单个列表

iyfjxgzm  于 2022-11-20  发布在  Java
关注(0)|答案(1)|浏览(175)

我有两个函数- funca和func B,它们返回数据类型X的值或数据类型X的值列表,如-

X funca(Event e){...}

List< X > funcb(Event e){...}

我希望在为流中的不同值调用这些函数时,使用Java 8将它们收集到一个列表中,如下所示- //有一些列表输入

List< X >  resultList = input.stream().values().(event -> event.status=="active" ? funca(event) : funcb(event)).collect(Collectors.toList());

上面的代码行不能正常工作。有人能告诉我如何实现这一点,以便函数返回一个值列表或值..它们使用Java8被收集到一个列表中吗?

List<X> = input.stream().values().(event -> event.status=="active" ? funca(event) : funcb(event)).collect(Collectors.toList()); 

X funca(Event e){...}

List< X > funcb(Event e){...}

我试过了,但不起作用

0lvr5msh

0lvr5msh1#

funcA的结果嵌入到列表中,然后将flatMap嵌入到列表中:

List<X> result = input.stream()
                      .flatMap(e -> e.status.equals("active") ? List.of(funcA(e)) : funcB(e))
                      .collect(Collectors.toList());

相关问题