如何为以下代码编写java 8 Stream代码?

时间:2018-04-24 10:26:28

标签: java java-8 java-stream

List<String> myList = Arrays.asList("a1", "a2", "b1", "c2", "c1");
List<Integer> addList=new ArrayList<Integer>();

for(String listobj:myList) {
    String appendedobj=listobj+"%";
    List<Integer> intlist=myMethod(appendedobj,listobj);
    addList.addAll(intlist);
}


public list<Integer> mymethod(appendedobj,listobj)
{
    do something and retrurn list of integers;
}

我想将此转换为java 8 Stream代码,但我不确定如何使用两个参数调用myMethod

1 个答案:

答案 0 :(得分:2)

您有一个循环,为输入List的每个元素生成一个要添加到输出循环的元素列表。在这种情况下可以使用flatMap

List<String> addList =
    myList.stream()
          .flatMap(listobj -> myMethod(listobj+"%",listobj).stream())
          .collect(Collectors.toList());

编辑:我不确定List输出的输出Listmymethod()的类型。您在代码中混合了List<String>List<Integer>(您无法从List<String>返回mymethod并将其分配给List<Integer>