首页 文章

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

提问于
浏览
-4

这个问题在这里已有答案:

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

  • 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();
    

    但是如果给定的索引超出 listOfIntegers 的范围,这种方式可能会导致 ArrayIndexOutOfBoundsException .

相关问题