Я пытаюсь найти лучший средний балл из двухмерного массива:
String[][] scores = { { "Amit", "70" }, { "Arthit", "60" }, { "Peter", "60" }, { "Arthit", "100" } };
Вывод: 80 (оценка Артита (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());
}
Не могли бы вы предложить, каков лучший подход для обработки двумерного массива с использованием потока?
Примечание: Я не ищу точное решение, просто ищу ваше ценное предложение.