【发布时间】:2018-02-13 20:44:18
【问题描述】:
我对 groupingBy 方法有疑问。
我用一个例子:
假设有一个List<Person>,其中Person.class 和City.class 是这样的
class Person{
String name;
String surname;
City city;
}
class City{
String name;
String postalCode;
}
我会按city.postalcode 对列表进行分组,然后执行以下操作:
List<Person> myList = ...some persons here...
Map<City,List<Person>> groupMap = myList.stream().collect(
Collectors.groupingBy(person -> person));
显然这不起作用,因为groupingBy 不知道如何按对象分组。
我会做类似Collectors.groupingBy(person -> person.city.postalcode) 的事情,但这样会生成Map<String,List<Person>> 类型的地图,而不是Map<City,List<Person>>
感谢您的帮助。
更新
要在一个类上使用groupingBy,它必须简单地正确实现equals 和hashcode
【问题讨论】:
标签: java java-8 grouping java-stream