Как создать карту с атрибутом в качестве ключа и максимальным значением в качестве значенияJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как создать карту с атрибутом в качестве ключа и максимальным значением в качестве значения

Сообщение Anonymous »

В колледже мы работаем с файлами и потоками CSV. Сейчас я делаю домашнее задание, но застрял в этом упражнении уже несколько дней.
У меня есть CSV-файл с некоторыми данными о несчастных случаях (например, серьезность несчастных случаев, количество жертв и т. д.), и у меня есть функция, которая считывает эти данные и преобразует их в список объектов Accident (который имеет свойство для каждого типа данных в CSV):

Код: Выделить всё

public class Accident {
private Severity severity;
private Integer victims;

public Accident(Severity severity, Integer victims) {
this.severity = severity;
this.victims = victims;
}
}
Я сохранил этот список в объекте и могу вызвать его с помощью getAccidents():

Код: Выделить всё

private List accidents;

public AccidentArchive(List accidents) {
this.accidents = accidents;
}

public Map getMaxVictimsPerSeverity() {
//Not working correctly
return getAccidents().stream().collect(Collectors.toMap(Accident::getSeverity, Accident::getVictims, Integer::max));
}
Сейчас мне нужно создать функцию, которая создает карту с атрибутом в качестве ключа и максимальным значением в качестве значения. Я подумал, что ключами карты может быть степень серьезности (которая представляет собой перечисление со значениями SLIGHT, SERIOUS и FATAL), а значения могут быть наибольшим числом жертв каждого несчастного случая с та же серьезность.
Например, выходные данные карты могут быть такими: SLIGHT=1, SERIOUS=3, FATAL=5.
Я пробовал использовать библиотеки «Коллекции», «Коллекторы» и «Компаратор», но не могу найти способ разделить все несчастные случаи по каждому значению серьезности, получить максимальное значение. количество жертв для каждой, а затем сохраните оба значения в Map.
Сейчас функция запускается следующим образом:

Код: Выделить всё

public Map getMaxVictimsPerSeverity() {
return getAccidents().stream().collect(Collectors.toMap(Accident::getSeverity, ...))
Я пробовал много вещей, но не могу найти способ вернуть то, что я хочу. Как мне это сделать?


Подробнее здесь: https://stackoverflow.com/questions/723 ... as-a-value
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»