【问题标题】:Java 8 collecting the list that is already present in objectJava 8 收集对象中已经存在的列表
【发布时间】:2019-09-24 15:37:09
【问题描述】:

我只是在寻找更好的方法来使用 java 8 流来处理这种情况。对象 A 具有对象 b 的列表。我得到的是对象A(列表)的列表。我需要通过对象 A 的列表进行流式传输,并将每个对象 A 中的所有 listB 作为一个单独的列表获取。

class A {
    List<B> listB
}

我已经尝试了以下引发编译的方式

List<A> as = someObject.getAs();
List<B> listofBs = as.stream().map(in -> in.getListB()).collect(Collectors.toList());

【问题讨论】:

  • 您的示例代码不合法​​,您似乎尝试的也不合法;为什么需要收集现有的List
  • 你遇到了什么错误?
  • 我需要使用 addAll() 收集每个对象 A 列表中 B 的所有列表
  • @PaulLemarchand 这是我得到的错误:不兼容的类型。必需的 List 但“收集”被推断为 R:不存在类型变量的实例,因此 List 符合 B 推断变量 T 具有不兼容的边界:等式约束:Blower 边界:List

标签: java java-8 functional-programming java-stream


【解决方案1】:

要获得所有 B 的单个列表,您应该使用 flatMap 作为:

List<B> listOfBs = listOfAs.stream()
        .flatMap(a -> a.getListB().stream())
        .collect(Collectors.toList());

【讨论】:

    【解决方案2】:
    Class A{
      List<B> listB
    };
    List<A> listA;
    listA.stream().map(
     a->{
      //some code for A
      a.ListB.stream().map(
       b->{
        // some code for B
      })
    });
    

    可能对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-27
      • 1970-01-01
      相关资源
      最近更新 更多