首页 > 解决方案 > 使用 filter() 逐个过滤掉元素

问题描述

我将从我的问题开始:

我有一个数组:

int[] arr = { 1,2,3,4,5 };,我想将值存储到List<Integer> li这样的:14,13,12,11,10

这些值是如何li像这样进入列表的?

我们的初始数字是1,2 ,3 ,45。我们可以使用五个整数中的四个来计算以下总和:

我的方法和想法:

我以为我已经有了一个int [] arr,所以我将使它流式传输,现在我将filter逐个输出每个元素,并将sum在每次迭代中休息并将其添加到 List li

List<Integer> li   = IntStream.range(0,1).filter(i-> arr[i] !=i).sum();

^^ 这没有用,我想我可以像下面这样做吗?

IntStream.range(0,1).filter(i-> filter(this is anotherfilter)).sum();

我无法理解这一点,我想用流和 java-8 来解决这个问题。

标签: javajava-8java-stream

解决方案


您可以将其分为两个步骤并执行以下操作:

int[] arr = { 1,2,3,4,5 };
int total = Arrays.stream(arr).sum(); // total of the array
List<Integer> output = Arrays.stream(arr)
        .mapToObj(integer -> total - integer) // (total - current) value as element
        .collect(Collectors.toList());

推荐阅读