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