我有一个带有city和zip字段的对象,我们称之为Record.
public class Record() {
private String zip;
private String city;
//getters and setters
}
现在,我有一些这些对象的集合,我使用以下代码通过zip对它们进行分组:
final Collection records; //populated collection of records
final Map> recordsByZip = records.stream()
.collect(Collectors.groupingBy(Record::getZip));
所以,现在我有一个地图,其中键是zip,值是带有该zip的Record对象列表.
我现在想要的是每个拉链最常见的城市.
recordsByZip.forEach((zip, records) -> {
final String mostCommonCity = //get most common city for these records
});
我想对所有流操作执行此操作.例如,我可以通过这样做获得每个城市的频率图:
recordsByZip.forEach((zip, entries) -> {
final Map frequencyMap = entries.stream()
.map(GisSectorFileRecord::getCity)
.filter(StringUtils::isNotBlank)
.collect(Collectors.groupingBy(Function.identity(), Collectors.counting()));
});
但我希望能够进行单线流操作,这将只返回最频繁的城市.
是否有任何Java 8流专家可以在这方面有所作为?