使用Kotlin将序列分散到三个列表的习惯性方法

所以这可能比Kotlin更多的是函数式编程,我在这个阶段有一点知识是危险的,而且我在Kotlin上写了这个应用程序,所以把Kotlin问题当作我感兴趣的Kotlins结构似乎是公平的。

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

1,a,+,2,b,*,3,c,&....... 

我想要做的就是把它分成三个列表,目前我通过将它分成两个列表,一个是包含数字的列表,另一个是包含所有其他列表的列表,然后将结果的后半部分,字母和符号以及再分割成字母和符号,这样我就得到了三个列表。

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

有没有这样做的有效方式,我的选择,这个或for循环?

谢谢

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

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

其中getElementType是返回元素类型的函数:是字母,数字还是符号。 这个函数可能会返回一个数字,比如1,2,3,或者是一些枚举值与3个不同的条目。

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