如何返回一个int,它应该是ArrayList中值的总和

时间:2018-02-08 15:05:18

标签: java

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的值的总和。我将如何进行此操作?

1 个答案:

答案 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