У меня есть 2d массив данных, в качестве входных данных, где все элементы являются строками. Данные в формате - имя, оценка. Я должен написать метод, принимающий этот массив в качестве входных данных и возвращающий String [] [], показывающий отличное имя и среднее значение оценок. Все это с помощью потоков.
{"Ann", "5"},
{"Tom", "6"},
{"Kate", "3"},
{"Albert", "2"},
{"Ann", "3"},
{"Tom", "1"},
{"Tom", "4"},
{"John", "2"}
То, что я до сих пор достиг, это напечатать этот вывод:
Ann=4.0
Tom=3.6666666666666665
Kate=3.0
John=2.0
Albert=2.0
с этим кодом:
Arrays.stream(input)
.collect(Collectors.groupingBy(a -> a[0], Collectors.averagingDouble(a -> Double.parseDouble(a[1]))))
.entrySet().forEach(System.out::println);
(я использую system.outпросто чтобы проверить вывод, так как я застрял.)
Вывод должен быть отсортирован по имени, градации отформатированы в два знака после запятой с помощью DecimalFormat. Пустой массив должен быть возвращен в случае пропуска нулевого ввода (я полагаю, это может быть подсказка об использовании опций).
Я искал различные решения, чтобы дать мне подсказку, но я застрял полностью. Я даже не уверен, является ли мой вывод двухмерным массивом. И это определенно не отсортировано и не отформатировано. Любая помощь приветствуется.