将存储在不同 Arraylist 中的值添加到算术平均值的新值

Add values stored in different Arraylist to a new one for the Arithmetic Mean

我有多个 Arraylist 并且都具有相同的大小 :

ArrayList<Integer> list1; // = [ 1 , 1 , 1 , 1 , 1 ]
ArrayList<Integer> list2; // = [ 2 , 2 , 2 , 2 , 2 ]
ArrayList<Integer> list3; // = [ 6 , 6 , 6 , 6 , 6 ]

这些值仅对示例有用。

对它们求和并获得 [9 , 9 , 9 , 9 , 9 ] 然后在最后 [ 3 , 3 , 3 , 3 , 3 ] 的平均值 !

我想获取一个名为 list4 的新列表

list4 = list1+list2+list3 

对于平均值,这样我还需要:

list4 = list4/3

我怎样才能得到这个(没有循环)?

没有循环根本不可能。

即使在 Java8 中使用流,您也可以获得单个 ArrayList 元素的总和。

不是精确解,但更接近的解是 Java 8。您可以像 IntStream.range(0, list1.size()).mapToObj(i -> (list1.get(i) + list2.get(i) + list3.get(i))/3).collect(Collectors.toList()); 那样做。前提是所有列表的大小都相同。示例..

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.IntStream;

public class Sample {

    public static void main(String[] args) {
        List<Integer> list1 = new ArrayList<Integer>(Arrays.asList(new Integer[]{ 1 , 1 , 1 , 1 , 1 })); 
        List<Integer> list2 = new ArrayList<Integer>(Arrays.asList(new Integer[]{ 2 , 2 , 2 , 2 , 2 })); 
        List<Integer> list3 = new ArrayList<Integer>(Arrays.asList(new Integer[]{ 6 , 6 , 6 , 6 , 6 })); 

        List<Integer> list4 = IntStream.range(0, list1.size()).mapToObj(i -> (list1.get(i) + list2.get(i) + list3.get(i))/3).collect(Collectors.toList());

        System.out.println(list4); // Prints [3, 3, 3, 3, 3]
    }

}