Collectors.toMap 的默认 return 值
Default return value for Collectors.toMap
如果我们成像,我们有一个叫做人的对象,人看起来像下面这样:
class Person {
int id;
String name;
String country
// ...
// getter/setter
}
我们有 List
个 Person
个对象,我们想 "convert" 将其添加到地图中。我们可以使用以下内容:
Map<Long, List<Person>> collect = personList.stream().
collect(Collectors.toMap(Person::getId, p -> p));
但是可以return valuemapper 的默认值并更改 valuemapper 的类型吗?
我想到了类似的事情:
Map<Long, List<Person>> collect =
personList.stream().collect(Collectors.groupingBy(Person::getId, 0));
但是我得到以下错误is not applicable for the arguments
我有一个解决方法,但我认为它不是很漂亮。
Map<Long, Object> collect2 = personList.stream().
collect(Collectors.toMap(Person::getId, pe -> {
return 0;
}));
如果您想将每个人的每个 ID 映射到相同的值,这正是您需要做的,尽管您可以通过编写 Collectors.toMap(Person::getId, pe -> 0)
.
来简化它
如果我们成像,我们有一个叫做人的对象,人看起来像下面这样:
class Person {
int id;
String name;
String country
// ...
// getter/setter
}
我们有 List
个 Person
个对象,我们想 "convert" 将其添加到地图中。我们可以使用以下内容:
Map<Long, List<Person>> collect = personList.stream().
collect(Collectors.toMap(Person::getId, p -> p));
但是可以return valuemapper 的默认值并更改 valuemapper 的类型吗?
我想到了类似的事情:
Map<Long, List<Person>> collect =
personList.stream().collect(Collectors.groupingBy(Person::getId, 0));
但是我得到以下错误is not applicable for the arguments
我有一个解决方法,但我认为它不是很漂亮。
Map<Long, Object> collect2 = personList.stream().
collect(Collectors.toMap(Person::getId, pe -> {
return 0;
}));
如果您想将每个人的每个 ID 映射到相同的值,这正是您需要做的,尽管您可以通过编写 Collectors.toMap(Person::getId, pe -> 0)
.