Map<Long, List<T>> 用 lambda 将List<T>一字段放入集合
时间: 2024-06-10 07:01:32 浏览: 86
Map<Long, List<T>> 是一个键值对的集合,其中键的类型是 Long,值的类型是 List<T>。Lambda 表达式可以用来将 List<T> 中的某个字段放入集合中。
下面是一个示例代码,展示了如何使用 Lambda 表达式将 List<T> 中的某个字段放入集合中:
```java
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Main {
public static void main(String[] args) {
List<Person> personList = new ArrayList<>();
personList.add(new Person(1L, "Alice"));
personList.add(new Person(2L, "Bob"));
personList.add(new Person(3L, "Charlie"));
Map<Long, List<String>> map = new HashMap<>();
personList.forEach(person -> {
Long id = person.getId();
String name = person.getName();
map.computeIfAbsent(id, k -> new ArrayList<>()).add(name);
});
System.out.println(map);
}
static class Person {
private Long id;
private String name;
public Person(Long id, String name) {
this.id = id;
this.name = name;
}
public Long getId() {
return id;
}
public String getName() {
return name;
}
}
}
```
在上述代码中,我们定义了一个 Person 类,其中包含了 id 和 name 两个字段。我们将多个 Person 对象放入 personList 中。然后,我们创建了一个空的 map 对象,用于存储结果。通过使用 forEach 方法遍历 personList,对于每个 Person 对象,我们获取其 id 和 name,然后使用 computeIfAbsent 方法将 name 放入对应的 List 中,并将该 List 放入 map 中。最后,我们打印出 map 的内容。
阅读全文