Есть сущность Person. У нее есть геттер getId()
.
Есть список этих сущностей List<Person>.
Как конвертировать из List<Person>
в Map<String, List<Person>>
так, что бы в качестве ключей были Id
?
Т.е. сгрупировать Person
по Id
.
Самое простое и в лоб:
Второй способ - использовать стримы Java8 и их методы, в частности группировки Collectors.groupingBy
Полагаю можно сделать как то так:
Map<String, List<Person>> mapPerson = new HashMap<String, List<Person>>();
for(int i = 0; i<listPerson.size(); i++)
{
String key = listPerson.get(i).getId();
if (!mapPerson.containsKey(key))
{
mapPerson.put(key, new ArrayList<Person>());
}
mapPerson.get(key).add(listPerson.get(i));
}
Вариант на Stream API
Map<String, List<Person>> index = persons.stream()
.collect(Collectors.groupingBy(Person::getId));
Вариант на коллекциях Java 8 без этих некрасивых containsKey
Map<String, List<Person>> index = new HashMap<>();
for (Person person : persons) {
index.computeIfAbsent(person.getId(), k -> new ArrayList<>()).add(person);
}
1. Вариант - используем Map<String, Person>
(Если ID уникален)
import java.util.ArrayList;
import java.util.HashMap;
public class Main {
public static void main(String[] args) {
ArrayList<Person> persons = new ArrayList<>();
HashMap<String, Person> personsMap = new HashMap<>();
for (Person person : persons) {
personsMap.put(person.getId(), person);
}
}
class Person {
String id;
public String getId() {
return id;
}
}
}
2. Вариант - используем Map<String, List<Person>>
(Если ID повторяются)
import java.util.ArrayList;
import java.util.HashMap;
public class Main1 {
public static void main(String[] args) {
ArrayList<Person> persons = new ArrayList<>();
HashMap<String, ArrayList<Person>> personsMap = new HashMap<>();
for (Person person : persons) {
ArrayList<Person> personsList = personsMap.get(person.getId());
if (personsList == null) {
personsMap.put(person.getId(), new ArrayList<Person>());
} else {
personsList.add(person);
}
}
}
class Person {
String id;
public String getId() {
return id;
}
}
}
если тип сущности Person
Map<String, List<Person>> map = new HashMap<String, List<Person>>();
List<Person> pers = new ArrayList<Person>();
int id = 0;
for(Person x : pers){
String s = String.valueOf(id);
map.put(s,x);
id++;
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Новичок, только начал изучать JavaОбъясните, пожалуйста, как создают базы данных в Java
Я разрабатываю приложение, которые имеет два отдельных сервисаОдин из них -> create-react-app, который воспроизводится на порте 3000, другой spring boot rest API service,...