Java 8 将对象列表{string,strings}转换为字符串流,如;main 1 sub1“&引用;main 1 sub2“&引用;main2 sub3“;

Java 8 将对象列表{string,strings}转换为字符串流,如;main 1 sub1“&引用;main 1 sub2“&引用;main2 sub3“;,java-8,java-stream,Java 8,Java Stream,我有一个Category类的对象列表 class Category { String main; List<String> subs; } Requested是一个完整但简短的示例 public class Category { String main; List<String> subs = new ArrayList<>(); public static void main(String[] args) { List<

我有一个Category类的对象列表

class Category { 
  String main;
  List<String> subs;
}
Requested是一个完整但简短的示例

public class Category {
  String main;
  List<String> subs = new ArrayList<>();

  public static void main(String[] args) {
    List<Category> categories = new ArrayList<>();
    for ( int i = 0; i < 3; i++) {
      Category cat = new Category();
      cat.main = "cat-" + i;
      for( int j = 0; j < 4; j++) {
        cat.subs.add( "sub-" + i + "-" + j);
      }
      categories.add( cat);
    }
    categories.stream()
      .flatMap( ???).forEach( x -> System.out.println( x));
  }
}
公共类类别{
主弦;
List subs=new ArrayList();
公共静态void main(字符串[]args){
列表类别=新建ArrayList();
对于(int i=0;i<3;i++){
类别cat=新类别();
cat.main=“cat-”+i;
对于(int j=0;j<4;j++){
目录子项添加(“子项-”+i+“-”+j);
}
类别。添加(cat);
}
类别.流()
.flatMap(???).forEach(x->System.out.println(x));
}
}

您可以在
子文件上进行流式处理,然后转换为您的格式并展平列表

listOfcategories.stream()
                .flatMap(c -> c.getSubs().stream().map(s -> c.getMain() + " " + s))
                .collect(Collectors.toList());

回答得很好!非常感谢你。
listOfcategories.stream()
                .flatMap(c -> c.getSubs().stream().map(s -> c.getMain() + " " + s))
                .collect(Collectors.toList());