我想使用流来执行此类操作:
List<String> listX = new ArrayList<>();
for(int i=0;i<listY.size();i++){
listX.add(String.format(ABC,i));
}
所以我必须使用另一个列表的长度迭代列表并另外使用计数器i。毕竟我想要返回新列表
答案 0 :(得分:2)
使用IntStream.range&amp; IntStream.mapToObj方法。并且不会在流api中运行lambda表达式中的变量,这将导致并行流中的Thread Interference或Memory 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()));