小编典典

使用 Kotlin 将序列溢出到三个列表中的惯用方法

Kotlin

所以这可能更多地是关于函数式编程而不是 Kotlin,我在那个阶段有点知识是危险的,我用 Kotlin 编写了这个应用程序,所以问一个 Kotlin 问题似乎是公平的,因为它的 Kotlins 结构是我感兴趣的。

我有一系列项目,它们是三批的,所以流可能看起来像

1,a,+,2,b,*,3,c,&.......
我想要做的是把它分成三个列表,目前我通过分成两个列表来做到这一点,一个包含数字,一个包含其他所有内容,然后取结果的后半部分,字母和符号和再次划分为字母和符号,因此我得到了三个列表。

这让我觉得效率低下,也许功能方法不是这里最好的方法。

有没有一种有效的方法来做到这一点,我的选择是这个还是一个 for 循环?


阅读 265

收藏
2022-06-27

共1个答案

小编典典

您可以使用groupBy方法按元素类型对序列的元素进行分组:

val elementsByType = sequence.groupBy { getElementType(it) }

函数返回元素的类型在哪里getElementType:它是字母、数字还是符号。此函数可能返回一个数字,例如 1、2、3,或具有 3 个不同条目的某个枚举的值。

groupBy返回从元素类型到该类型元素列表的映射。

2022-06-27