gpt4 book ai didi

Java - 过滤掉最低整数的汇总列表

转载 作者:行者123 更新时间:2023-12-05 09:09:42 24 4
gpt4 key购买 nike

所以,我有一个 int[] arr 并想在过滤掉最小 int 的同时使用流对其求和。我有一个使用两个流的解决方案,它有效但似乎无效。有没有办法只用一个流来做到这一点?

代码:

int min = Arrays.stream(arr)
.min()
.getAsInt();
int sum = Arrays.stream(arr)
.filter(i -> i != min)
.sum();

最佳答案

以下代码使用 IntSummaryStatistics应该可以解决问题。

public static void main(String[] args) {
int[] arr = {1, 2, 3, 4, 5, 6};
IntSummaryStatistics stats = Arrays.stream(arr).summaryStatistics();
int sum = (int) stats.getSum() - stats.getMin();
}

来自 IntSummaryStatistics 的文档:

A state object for collecting statistics such as count, min, max, sum, and average.

...

This computes, in a single pass, the count of people, as well as the minimum, maximum, sum, and average of their number of dependents.

编辑:如果您想删除所有具有最小值的元素:

    int[] arr = {1, 2, 3, 1, 1, 1};

TreeMap<Integer, Integer> map = Arrays.stream(arr).boxed()
.collect(toMap(
v -> v,
v -> 1,
Integer::sum,
TreeMap::new
));

map.remove(map.firstKey());
int sum = map.entrySet().stream().mapToInt(e -> e.getKey() * e.getValue()).sum();
System.out.println(sum);

    List<Integer> list = Arrays.stream(arr).sorted().boxed().collect(toList());
Integer min = list.get(0);
int sum2 = list.stream().mapToInt(i -> i).dropWhile(min::equals).sum();
System.out.println(sum2);

关于Java - 过滤掉最低整数的汇总列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62179095/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com