Учитывая, что Person
класс имеет три поля: имя (String), возраст (int), оклад (double).
Я хочу создать карту с именем в качестве ключа и значением в качестве зарплаты (вместо Person
самого объекта), если ключ не является уникальным, тогда используйте connectedList для хранения значений всех дубликатов ключей.
Я имею в виду решение, приведенное по ссылке ниже:
Идиоматическое создание многозначной карты из потока в Java 8
, но все еще неясно, как создать хэш-карту со значением Salary в качестве значения .
Я могу создать map<String, List<Double>>
с помощью forEach (). код указан ниже:
List<Person> persons= new ArrayList<>();
persons.add(p1);
persons.add(p2);
persons.add(p3);
persons.add(p4);
Map<String, List<Double>> personsByName = new HashMap<>();
persons.forEach(person ->
personsByName.computeIfAbsent(person.getName(), key -> new LinkedList<>())
.add(person.getSalary())
);
но я пытаюсь использовать "groupingBy & collect" для создания карты.
Если мы хотим, чтобы Person
сам объект как значение, тогда код приведен ниже:
Map<String, List<Person>> personsByNameGroupingBy = persons.stream()
.collect(Collectors.groupingBy(Person::getName, Collectors.toList()));
Но я хочу создать карту с зарплатой в качестве значения, как указано ниже:
Map<String, List<Double>>
Как добиться этого сценария?