将存储在不同 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]
}
}
我有多个 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]
}
}