所以这可能更多地是关于函数式编程而不是 Kotlin,我在那个阶段,一点知识都是危险的,而且我用 Kotlin 编写了应用程序,所以问一个 Kotlin 问题似乎是公平的,因为我感兴趣的是它的 Kotlins 结构.
我有一系列项目,它们以三个为一组,因此流可能看起来像
1,a,+,2,b,*,3,c,&.......
我想要做的是将其分成三个列表,目前我正在通过分为两个列表来做到这一点,一个包含数字,一个包含其他所有内容,然后取结果的后半部分,即字母和符号并再次分区,分为字母和符号,因此我最终得到三个列表。
这让我觉得有些低效,也许函数式方法并不是最好的方法。
有没有一种有效的方法可以做到这一点,我的选择是这个还是 for 循环?
谢谢
最佳答案
您可以使用groupBy
方法按元素类型对序列中的元素进行分组:
val elementsByType = sequence.groupBy { getElementType(it) }
其中getElementType
是返回元素类型的函数:无论它是字母、数字还是符号。此函数可能返回一个数字,例如 1、2、3,或者返回具有 3 个不同条目的某个枚举的值。
groupBy
返回从元素类型到该类型元素列表的映射。
关于functional-programming - 使用 Kotlin 将序列拆分为三个列表的惯用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32574783/