public static ArrayList<Integer> q3(ArrayList<Integer> listOfIntegers){
ArrayList<Integer> listOfIntegers1 = new ArrayList<Integer>();
listOfIntegers1.add(16);
listOfIntegers1.add(6);
listOfIntegers1.add(10);
listOfIntegers1.add(12);
return listOfIntegers1;
}
我必须将一个整数的ArrayList作为参数并返回一个int。返回的int应该是索引16,6,10和12处的输入ArrayList中int的值的总和。我将如何进行此操作?
答案 0 :(得分:1)
使用索引列表过滤值后,只需使用IntStream::sum
:
List<Integer> listOfIntegers = Arrays.asList(0,1,2,3,4,5,100,7,8,9,100,11,100,13,14,15,100,17);
List<Integer> listOfIndexes = Arrays.asList(16,6,10,12);
return listOfIntegers
.stream()
.filter(i -> listOfIndexes.contains(listOfIntegers.indexOf(i))
.mapToInt(Integer::intValue)
.sum();
输出:
400
甚至更好地避免迭代整个listOfIntegers
:
return listOfIndexes
.stream()
.mapToInt(idx -> listOfIntegers.get(idx))
.sum();
但如果给定的索引超出ArrayIndexOutOfBoundsException
的范围,这种方式可能会导致listOfIntegers
。