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
。
答案 0 :(得分:2)
您有一个循环,为输入List的每个元素生成一个要添加到输出循环的元素列表。在这种情况下可以使用flatMap
。
List<String> addList =
myList.stream()
.flatMap(listobj -> myMethod(listobj+"%",listobj).stream())
.collect(Collectors.toList());
编辑:我不确定List
输出的输出List
和mymethod()
的类型。您在代码中混合了List<String>
和List<Integer>
(您无法从List<String>
返回mymethod
并将其分配给List<Integer>
。