java8 lambda list转map
时间: 2023-10-20 22:22:42 浏览: 113
java8快速实现List转map 、分组、过滤等操作
5星 · 资源好评率100%
Java8中可以使用Lambda表达式将List转换成Map,具体实现如下:
```java
List<Person> personList = new ArrayList<>();
personList.add(new Person("Tom", 25));
personList.add(new Person("Jerry", 30));
personList.add(new Person("Mike", 35));
Map<String, Integer> personMap = personList.stream()
.collect(Collectors.toMap(Person::getName, Person::getAge));
System.out.println(personMap);
```
上述代码中,我们通过stream()方法将List转换成Stream,然后通过collect()方法将其转换成Map,其中getName()和getAge()方法是Person类中的方法,用于获取该对象的name和age属性值。最终输出结果如下:
```
{Tom=25, Jerry=30, Mike=35}
```
需要注意的是,在使用toMap()方法时,如果List中存在重复的key值,会抛出IllegalStateException异常,因此需要在toMap()方法中指定解决重复key的方式,例如:
```java
Map<String, Integer> personMap = personList.stream()
.collect(Collectors.toMap(Person::getName, Person::getAge, (existingValue, newValue) -> existingValue));
```
上述代码中,我们使用了一个lambda表达式来解决重复key的问题,当出现重复key时,我们选择保留原有的value值。
阅读全文