gpt4 book ai didi

java - 二维数组的流式操作

转载 作者:搜寻专家 更新时间:2023-10-31 08:18:43 25 4
gpt4 key购买 nike

我试图从以下二维数组中找到最佳平均分:

String[][] scores = { { "Amit", "70" }, { "Arthit", "60" }, { "Peter", "60" }, { "Arthit", "100" } };

输出为:80(Arthit的分数(60+100)/2)

直到现在我用下面的方法解决了这个问题,但是我正在寻找流的优雅解决方案:

public static void main(String[] args) {
String[][] scores = { { "Amit", "70" }, { "Arthit", "60" }, { "Peter", "60" }, { "Arthit", "100" } };

int highestAvg = Integer.MIN_VALUE;
Function<String[], Integer> function = new Function<String[], Integer>() {
@Override
public Integer apply(String[] t) {
int sum = 0, count = 0;
for (int i = 0; i < scores.length; i++) {
if (t[0].equals(scores[i][0])) {
count++;
sum += Integer.parseInt(scores[i][1]);
}
}
int avg = sum / count;
return highestAvg < avg ? avg : highestAvg;
}
};
System.out.println(Arrays.stream(scores).map(function).max((o1, o2) -> o1.compareTo(o2)).get());
}

您能否建议使用流处理二维数组的更好方法是什么?

注意:我不是在寻找确切的解决方案,只是在寻找您宝贵的建议。

最佳答案

您可以更多地使用内置流功能,包括 averaginggrouping Collection 家:

Stream.of(scores)
.collect(
Collectors.groupingBy(a -> a[0],
Collectors.averagingInt(a -> Integer.parseInt(a[1]))))
.entrySet()
.stream()
.max(Entry.comparingByValue())
.ifPresent(bestScore -> {
String message = String.format("Best score is %s, by %s", bestScore.getValue(), bestScore.getKey());
System.out.println(message);
});

打印 Best score is 80.0, by Arthit

关于java - 二维数组的流式操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52893947/

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