#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++; }
Комментариев нет:
Отправить комментарий