[英]Sum of ArrayList<ArrayList<Integer>>?
有什么办法可以找到inputList
列表的所有元素的inputList
?
这是我尝试过的方法,但这仅适用于我假设的常规ArrayList Integer。
static int add(ArrayList<ArrayList<Integer>> inputList) {
int a = (int) inputList;
int sum = 0;
for(int d : a)
sum = sum + d;
return sum;
}
您不能将ArrayList强制转换为整数基本类型,因此应删除该行。 出于相同的原因,您不能使用增强的for循环,因为该参数是ArrayLists of Integers的ArrayList。
static int add(ArrayList<ArrayList<Integer>> inputList) {
int sum = 0;
for(ArrayList<Integer> nestedList : inputList) {
for (int n : nestedList) sum += n;
}
return sum;
}
一种解决方法是使用嵌套的foreach
循环遍历外部列表和内部列表,然后简单地将所有元素加在一起。
static int add(ArrayList<ArrayList<Integer>> inputList) {
int sum = 0;
for (ArrayList<Integer> list : inputList) {
for (int number : list) {
sum += number;
}
}
return sum;
}
您可以使用Java8流来查找总和,如以下代码所示(单行显示)(遵循注释):
int sum = inputList.stream().//get the stream for the outer list
flatMapToInt(list -> list.stream().
mapToInt(value -> value)).//flatten the inner list
sum();//get the sum
以下是一些解决方案:
import java.util.List;
class Class {
public int addViaLoops(List<List<Integer>> inputList) {
int sum = 0;
for (final List<Integer> l : inputList) {
for (final int i : l) {
sum += i;
}
}
return sum;
}
public int addViaStreams(List<List<Integer>> inputList) {
return inputList.stream()
.flatMapToInt(l -> l.stream()
.mapToInt(i -> i))
.sum();
}
}
static int add(ArrayList<ArrayList<Integer>> inputList){
int sum = 0; // initiate sum to zero.
for (ArrayList<Integer> list: inputList) {
for (Integer i: list) {
sum += i.intValue(); // intValue() might not be necessary, but it doesn't hurt
}
}
return sum;
}
上面的代码应该非常简单。 使用foreach循环,我们可以迭代inputList
所有列表,然后可以迭代每个列表并将其值添加到sum
。
你在哪里...
int a = (int) inputList;int a = (int) inputList;
int sum = 0;
for(int d : a)
sum = sum + d;
...将无法正常工作,因为您正在尝试将整数列表转换为整数。
希望这是有道理的。
inputList.stream().flatMap(Collection::stream).mapToInt(i -> i).sum();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.