collectors.groupingby map类型转换
时间: 2023-06-28 20:12:49 浏览: 117
如果你想在使用Java 8 Stream的collect方法中使用groupingBy进行分组,并且还希望在分组后对结果进行转换,可以使用Collectors.mapping方法。
下面是一个例子,假设你有一个Person类,它有一个名字和一个年龄属性:
```java
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
```
现在,假设你有一个Person列表,你想按照年龄分组,并将每个年龄组中的Person的名字转换为大写。你可以使用以下代码:
```java
List<Person> people = // a list of people
Map<Integer, List<String>> groupedNames = people.stream()
.collect(Collectors.groupingBy(
Person::getAge,
Collectors.mapping(Person::getName, Collectors.toList())
));
```
这个代码块将People按照年龄分组,并将每个年龄组中的People的名字转换为大写。最终结果是一个Map,其中键是年龄,值是名字列表(已经转换为大写)。注意,这里使用了Collectors.toList()来将转换后的名字收集到列表中。你也可以使用其他收集器来收集,比如toSet()来将名字收集到集合中。
阅读全文