algorithm - 以最大化同一初始集合的元素之间的距离的方式从多个集合创建单个集合
问题描述
假设您有以下数据结构:
val words = Seq("cat", "dog", "kid", "dee", "ding", "chip", "chord")
val grouped = words.groupBy(_.charAt(0))
什么是创建另一个集合的好方法,该集合是通过grouped
循环获取序列的每个元素而形成的?即是这样的:
Seq("kid", "dog", "cat", "dee", "chip", "ding", "chord")
或者
Seq("dog", "cat", "kid", "dee", "chip", "ding", "chord")
我们事先不知道会有多少个序列grouped
。
解决方案
您可以使用zipWithIndex
将它们与每个组内的索引组合来展平值,然后按该索引分组并再次展平:
grouped.values
.flatMap(xs => xs.zipWithIndex)
.groupBy(_._2)
.values
.flatMap(_.unzip._1)
推荐阅读
- c# - 从排序的字典中获取值的范围
- ios - 如何修复“UITableViewCell 交换数据”?
- html - 为什么将绝对元素定位在其父相对元素的中心,同时将顶部和左侧设置为 50% 不起作用?
- python - 如何创建一个新的 python tkinter 窗口,使其完全适合可用的桌面区域,但没有最大化?
- java - 使用 Java Spring Boot Framework 订阅 STOMP 消息
- javascript - InnerHTML 返回 [object HTMLOptionElement]
- json - 合并数据集生成 Azure 数据工厂管道
- excel - 条件格式不适用于小于 TODAY(),仅适用于大于
- dc.js - Dc.js Boxplot 不创建轮廓
- python - 在直方图 matplotlib 的 x 轴上将月份数字切换为月份名称