Forma idiomática de secuencia dertwigda en tres lists usando Kotlin

Así que esto es posiblemente más sobre functional programming que Kotlin, estoy en esa etapa si un poco de conocimiento es peligroso, y escribí la aplicación en Kotlin, por lo que parece justo hacer una pregunta de Kotlin como sus estructuras de Kotlins que me interesan.

Tengo una secuencia de elementos, están en lotes de tres, por lo que la secuencia puede parecerse

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

Lo que quiero hacer es dividir esto en tres lists, actualmente estoy haciendo esto mediante la partición en dos lists, una que contiene los numbers y una que contiene todo lo demás, y luego toma la segunda mitad del resultado, las letras y símbolos y particionando de nuevo, en letras y símbolos, así termino con tres lists.

Esto me parece algo ineficiente, tal vez un enfoque funcional no es el mejor enfoque aquí.

¿Hay una forma eficiente de hacerlo, son mis elecciones, esto o un ciclo for?

Gracias

Puede usar el método groupBy para agrupar elementos de su secuencia por un tipo de elemento:

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

donde getElementType es function que devuelve un tipo del elemento: si es una letra, un número o un símbolo. Esta function puede devolver un número, como 1, 2, 3 o un valor de alguna enumeración con 3 inputs diferentes.

groupBy devuelve un map del tipo de elemento a la list de elementos de ese tipo.

  • ¿Existe un equivalente de Kotlin para la biblioteca AssertJ?
  • kotlin cómo referir el scope externo esto en funciones de aplicación multicapa
  • Error de reference no resuelto al llamar al método add en Kotlin Set interface
  • Burlarse de las interfaces con Kotlin y Mockito
  • Producto de una list o matriz en Kotlin
  • La desconnection no funciona en la aplicación Spring Boot (no es compatible con el método POST)
  • ¿Cuál es la forma correcta de crear una nueva instancia de class genérica en kotlin?
  • Soporte de macros en herramientas
  • Modificador de visibilidad equivalente del package en Kotlin
  • El operador Kotlin networkinguce parece no funcionar
  • OnClick y TextView en Android Studio 3