java - 收集器根据对象的属性创建列表列表
问题描述
我有以下对象:
列出人员
我想创建以下结构
List> 基于姓氏。
我可以使用 groupingBy(p -> p.getFamilyName()) 将它们分组到地图中。但我不想有一张地图,而是一个列表列表。
您可以使用地图的方法 values() 分两步完成。但我想知道你是否可以和收藏家一起做。
解决方案
您可以使用collectingAndThen
:
ArrayList<List<Person>> collect = stream.collect(
Collectors.collectingAndThen(Collectors.groupingBy(Person::getFamilyName),
m -> new ArrayList<>(m.values())));
这首先应用groupingBy
, “然后”ArrayList
为每个分组值创建一个。
推荐阅读
- html - 如何修复点击时不显示的下拉菜单?
- reactjs - 在 React 中将光标更改为自定义光标
- c# - 如何向 wpf 添加对另一个应用程序的引用,该应用程序已在 powerbuilder 中编写
- php - 如何为子目录配置 .htaccess
- javascript - 使用 fs.mkdir 创建文件夹仅限于只读,因此我无法删除文件夹。节点.js
- c# - Rhino 是否有任何插件或 api 可以将图像直接上传和导入到编辑器
- php - 不要不明白为什么没有正确提交扩展的 ChoiceType 值
- javascript - 为什么 JavaScript 中的下划线功能不起作用?
- c - 从孩子到父母的丢失信号
- dialogflow-es - 是否可以在 Google Home Hub 上创建“粘性”通知?