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);
}
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;
}
}
}
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++;
}
最简单的在额头:
第二种方法是使用 Java8 流及其方法,特别是对Collectors.groupingBy进行分组
Stream API 的变体
没有这些丑陋的 Java 8 集合的变体
containsKey
我想你可以这样做:
1.选项-使用
Map<String, Person>
(如果ID是唯一的)2. 选项- 使用
Map<String, List<Person>>
(如果 ID 重复)如果实体类型是 Person