java8 list转map
时间: 2023-10-13 20:28:50 浏览: 77
在Java 8中,可以使用Stream API将List转换为Map。下面是一个示例代码:
假设有一个Person类,其中包含id和name属性:
```
public 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;
}
}
```
现在有一个Person对象的List,需要将其转换为以id为key,Person对象为value的Map:
```
List<Person> personList = new ArrayList<>();
personList.add(new Person(1, "Alice"));
personList.add(new Person(2, "Bob"));
personList.add(new Person(3, "Charlie"));
Map<Integer, Person> personMap = personList.stream()
.collect(Collectors.toMap(Person::getId, Function.identity()));
System.out.println(personMap);
```
输出结果如下:
```
{1=Person{id=1, name='Alice'}, 2=Person{id=2, name='Bob'}, 3=Person{id=3, name='Charlie'}}
```
在这个例子中,使用Stream API的collect方法将List转换为Map。toMap方法接受两个参数,第一个参数是key的提取函数,这里使用了Person::getId方法引用,表示取Person对象的id属性作为key。第二个参数是value的提取函数,这里使用了Function.identity()方法引用,表示取Person对象本身作为value。
阅读全文