stream流list转map集合
时间: 2023-08-07 11:06:15 浏览: 173
可以使用Java 8的Stream流来将List转换为Map集合。你可以按照以下步骤进行操作:
1. 首先,确保你有一个包含元素的List。假设你有一个List,其中的元素类型为`Person`,并且每个`Person`对象都有一个唯一的ID作为键,你想将它们转换为以ID为键,`Person`对象为值的Map集合。
2. 使用`stream()`方法将List转换为流。
3. 使用`collect()`方法,并传递`Collectors.toMap()`作为参数来收集流元素并生成Map集合。在`toMap()`方法中,你需要指定键和值的提取函数。
这是一个示例代码片段,演示了如何将List转换为Map集合:
```java
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<Person> personList = getListOfPersons();
Map<Integer, Person> personMap = personList.stream()
.collect(Collectors.toMap(Person::getId, person -> person));
System.out.println(personMap);
}
private static List<Person> getListOfPersons() {
// 假设这是一个包含Person对象的List
// 每个Person对象都有一个唯一的ID作为键
// 你可以根据自己的需求来创建该List
return List.of(
new Person(1, "John"),
new Person(2, "Jane"),
new Person(3, "Alice")
);
}
}
class Person {
private int id;
private String name;
public Person(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public String getName() {
return name;
}
@Override
public String toString() {
return "Person{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
}
```
在上面的示例中,`Person`类表示一个人,包含ID和姓名两个属性。`getListOfPersons()`方法返回一个包含三个`Person`对象的List。
`personList.stream()`将List转换为流。
`Collectors.toMap(Person::getId, person -> person)`指定了键的提取函数为`Person::getId`,值的提取函数为`person -> person`。这将根据每个人的ID作为键,并以对应的`Person`对象作为值来生成Map集合。
最后,我们打印输出了生成的Map集合。
希望这可以帮助到你!如有任何问题,请随时提问。
阅读全文