我将从我的问题开始:
我有一个数组:
int[] arr = { 1,2,3,4,5 };
,我想像这样将值存储到List<Integer> li
:14,13,12,11,10
这些值如何像这样进入列表li
?
我们的初始号码为 1,2,3,4 和 5 。我们可以使用五个整数中的四个来计算以下总和:
我的方法和想法:
我以为我已经有了一个int [] arr
,因此我将使其流式传输,现在我将filter
逐个地移出每个元素,并且sum
会在每次迭代中保持静止,并将将此添加到列表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来解决这个问题。
答案 0 :(得分:4)
您可以将其分为两个步骤,并按以下步骤执行操作:
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());
答案 1 :(得分:1)
IntStream.range(0, arr.length)
.map(x -> IntStream.of(arr).sum() - arr[x])
.forEachOrdered(System.out::println);
或IntStream.of(arr).sum()
作为一个变量只能计算一次。
答案 2 :(得分:0)
Supplier<IntStream> supplier = () -> IntStream.range(1, 6);
supplier.get()
.map(integer -> supplier.get().sum() - integer)
.forEach(item -> System.out.println(item));
代替 forEach ,您可以使用 collect(Collectors.toList())将整数收集到列表中