我有多个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循环)?
答案 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
元素的总和。