将Java 7添加到循环中的列表迁移到Java 8

将Java 7添加到循环中的列表迁移到Java 8,java,java-8,Java,Java 8,我正在将java7代码迁移到Java8。下面用Java8发布的代码有哪些等效代码(最好是一行代码) List<Integer> list = Arrays.asList(1, 2, 3, 4, 5); List<Integer> output = new ArrayList<>(list.size()); for(Integer n : list) { int x = n * n * n; output.add(x); } List List

我正在将java7代码迁移到Java8。下面用Java8发布的代码有哪些等效代码(最好是一行代码)

List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);
List<Integer> output = new ArrayList<>(list.size());
for(Integer n : list) {
    int x = n * n * n;
    output.add(x);
}
List List=Arrays.asList(1,2,3,4,5);
列表输出=新的ArrayList(List.size());
for(整数n:list){
int x=n*n*n;
输出。添加(x);
}
您可以从
列表中获取数据,然后使用
map
计算
n*n*n
,然后通过

List output=List.stream().map(n->n*n*n).collect(Collectors.toList());
如果您想要精确匹配,它将是:

list.forEach(n -> output.add(n*n*n));
或者,如果要使用
API:

list.stream().map(n->n*n*n).forEachOrdered(output::add);
但是,通常您会让
创建输出容器:

List<Integer> output = list.stream().map(n->n*n*n)
                           .collect(Collectors.toCollection(ArrayList::new));
但是,如果不需要将源代码作为
列表
,则以下操作将更有效:

List<Integer> output = IntStream.of(1, 2, 3, 4, 5).map(n->n*n*n)
                                .boxed().collect(Collectors.toList());
这是一种更有效的方法,但当然,它是否仍然“与发布的代码等效”还有争议

List<Integer> output = list.stream().map(n->n*n*n).collect(Collectors.toList());
List<Integer> output = IntStream.of(1, 2, 3, 4, 5).map(n->n*n*n)
                                .boxed().collect(Collectors.toList());
int[] output = IntStream.of(1, 2, 3, 4, 5).map(n->n*n*n).toArray();