stream流 list选取两个字段改成map
时间: 2023-08-01 22:10:56 浏览: 103
好的,根据您的要求,我可以为您提供以下Java代码实现:
假设有一个包含以下内容的流List:
```java
List<Person> personList = new ArrayList<>();
personList.add(new Person("John", "Doe", 30));
personList.add(new Person("Jane", "Doe", 25));
personList.add(new Person("Bob", "Smith", 35));
```
现在,假设您需要将该流List转换为一个Map,其中键为Person对象的姓氏,值为Person对象的年龄。您可以使用以下代码:
```java
Map<String, Integer> lastNameToAgeMap = personList.stream()
.collect(Collectors.toMap(
person -> person.getLastName(),
person -> person.getAge()));
```
上述代码使用 `Collectors.toMap()` 方法将Person对象的姓氏作为键,将Person对象的年龄作为值,并将其收集到一个Map中。在这个例子中,我们使用 `person.getLastName()` 和 `person.getAge()` 方法来获取Person对象的姓氏和年龄。
请注意,如果Person对象的姓氏不是唯一的,则上述代码将抛出 `IllegalStateException` 异常。如果您的数据集可能包含重复的键,您可以使用 `Collectors.toMap()` 方法的重载版本,该版本允许您指定一个合并函数来处理重复的键。
阅读全文