迭代列表,其中包含另一个列表长度的流

时间:2017-04-08 11:50:40

标签: java java-stream

我想使用流来执行此类操作:

List<String> listX = new ArrayList<>();
        for(int i=0;i<listY.size();i++){
            listX.add(String.format(ABC,i));
        }

所以我必须使用另一个列表的长度迭代列表并另外使用计数器i。毕竟我想要返回新列表

3 个答案:

答案 0 :(得分:2)

使用IntStream.range&amp; IntStream.mapToObj方法。并且不会在流api中运行lambda表达式中的变量,这将导致并行流中的Thread InterferenceMemory Consistency Errors

List<String> listX = IntStream.range(0, listY.size())
                              .mapToObj(i -> String.format(ABC,i))
                              .collect(Collectors.toList());

答案 1 :(得分:1)

您可以使用IntStream使用listY索引进行迭代,如下所示:

IntStream.range(0, listY.size()).forEach(i -> listX.add(String.format(ABC,i)));

答案 2 :(得分:1)

可以也使用Collectors.mapping,如下所示:

 IntStream.range(0, listY.size())
          .collect(Collectors.mapping(i -> String.format(ABC,i), 
                      Collectors.toList()));