Страницы

Поиск по вопросам

четверг, 19 декабря 2019 г.

Конвертировать из List<Person> в Map<String, List<Person>>

#java


Есть сущность Person. У нее есть геттер getId().

Есть список этих сущностей List.

Как конвертировать из List в Map> так, что бы в качестве
ключей были Id?

Т.е. сгрупировать Person по Id.
    


Ответы

Ответ 1



Вариант на Stream API Map> index = persons.stream() .collect(Collectors.groupingBy(Person::getId)); Вариант на коллекциях Java 8 без этих некрасивых containsKey Map> index = new HashMap<>(); for (Person person : persons) { index.computeIfAbsent(person.getId(), k -> new ArrayList<>()).add(person); }

Ответ 2



Самое простое и в лоб: итерировать список проверять за счет containsKey есть ли уже в мапе такой ключ. если нет, то создать список в данном ключе и добавить объект если есть, то в уже созданный список добавить объект Второй способ - использовать стримы Java8 и их методы, в частности группировки Collectors.groupingBy

Ответ 3



Полагаю можно сделать как то так: Map> mapPerson = new HashMap>(); for(int i = 0; i()); } mapPerson.get(key).add(listPerson.get(i)); }

Ответ 4



1. Вариант - используем Map (Если ID уникален) import java.util.ArrayList; import java.util.HashMap; public class Main { public static void main(String[] args) { ArrayList persons = new ArrayList<>(); HashMap personsMap = new HashMap<>(); for (Person person : persons) { personsMap.put(person.getId(), person); } } class Person { String id; public String getId() { return id; } } } 2. Вариант - используем Map> (Если ID повторяются) import java.util.ArrayList; import java.util.HashMap; public class Main1 { public static void main(String[] args) { ArrayList persons = new ArrayList<>(); HashMap> personsMap = new HashMap<>(); for (Person person : persons) { ArrayList personsList = personsMap.get(person.getId()); if (personsList == null) { personsMap.put(person.getId(), new ArrayList()); } else { personsList.add(person); } } } class Person { String id; public String getId() { return id; } } }

Ответ 5



если тип сущности Person Map> map = new HashMap>(); List pers = new ArrayList(); int id = 0; for(Person x : pers){ String s = String.valueOf(id); map.put(s,x); id++; }

Комментариев нет:

Отправить комментарий