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

时间:2015-08-21 09:52:57

标签: java arraylist sum add

我有多个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

我如何获得此(whitout循环)?

2 个答案:

答案 0 :(得分:2)

不是一个确切的解决方案,但是更接近于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]
    }

}

答案 1 :(得分:0)

没有循环就没有了。

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