stream流list转map示例
时间: 2023-07-05 08:15:50 浏览: 78
假设我们有一个`List`,其中每个元素都是一个`Person`对象,每个`Person`对象都有一个唯一的`id`和一个`name`属性。我们想要将这个`List`转换成一个`Map`,其中`id`是键,`Person`对象是值。可以使用Java 8的`stream()`方法和`Collectors.toMap()`方法来实现:
```java
List<Person> personList = new ArrayList<>();
// 假设我们已经向personList中添加了多个Person对象
Map<Integer, Person> personMap = personList.stream()
.collect(Collectors.toMap(Person::getId, Function.identity()));
```
上述代码中,`Person::getId`用于提取每个`Person`对象的`id`属性作为键,`Function.identity()`则返回每个`Person`对象本身作为值。最终,`personList`被转化为了一个`Map<Integer, Person>`对象,其中`id`是键,`Person`对象是值。
相关问题
stream 流 list 转map
Java Stream可以通过collect方法将List转换为Map。
示例代码如下:
```
List<Person> personList = Arrays.asList(
new Person("Tom", 20),
new Person("Jerry", 25),
new Person("Alice", 30)
);
Map<String, Integer> personMap = personList.stream()
.collect(Collectors.toMap(Person::getName, Person::getAge));
System.out.println(personMap);
```
其中,Person是一个自定义的类,包含name和age两个属性。通过stream的collect方法,使用Collectors.toMap方法将List转换为Map,其中Person::getName和Person::getAge分别是获取name和age属性的方法引用。
输出结果为:
```
{Tom=20, Jerry=25, Alice=30}
```
即将List中的每个Person对象转换为Map中的一个键值对,键为name属性,值为age属性。
stream流list转map
可以使用Java 8的stream()方法和Collectors.toMap()方法将一个包含键值对的List流转换为Map。示例代码如下:
```
List<Pair<String, Integer>> list = new ArrayList<>();
list.add(new Pair<>("apple", 1));
list.add(new Pair<>("banana", 2));
list.add(new Pair<>("cherry", 3));
Map<String, Integer> map = list.stream()
.collect(Collectors.toMap(Pair::getKey, Pair::getValue));
System.out.println(map);
// Output: {apple=1, banana=2, cherry=3}
```
这个代码片段将一个包含“apple”,“banana”和“cherry”三个字符串作为键,以及与之对应的1,2和3这三个整数值作为值的Pair对象列表流转换为一个Map。
阅读全文