разделить список по разделителю в Kotlin - PullRequest
0 голосов
/ 04 мая 2020

У меня есть список ниже

val list = listOf("o=one", "t=two", "t=two", "f=four", "o=one", "t=two", "s=seven", "o=one")

Я хочу разделить его на список, содержащий список [["o=one", "t=two", "t=two", "f=four"],["o=one", "t=two", "s=seven"],["o=one"]]

На самом деле я хочу сгруппировать список по разделителю "o =" и В списке всегда будет хотя бы одно значение "0 =". Как я могу добиться этого в Kotlin без создания изменяемого ключевого слова var, потому что мой код должен быть в функциональном стиле?

Я пробовал с методами group () и groupBy {}, но не смог получить ожидаемый результат результат.

1 Ответ

0 голосов
/ 04 мая 2020

Это может не охватывать все крайние случаи, и могут быть более эффективные способы сделать это, но, учитывая, что ваши требования не полностью ясны и чрезвычайно надуманы, это должно помочь вам начать в любом случае. С этого момента вы можете сами sh *. 1001 *

// Identifies indices of all "o=" elements in the list.
val splitAt = list
    .withIndex()
    .filter { it.value.startsWith( "o=" ) }
    .map { it.index }

// Create sublists.
val split = splitAt
    .windowed( 2, step = 1, partialWindows = true )
    .map {
        list.subList(
            it[0],
            if (it.count() == 1) it[0] + 1 else it[1]
        )
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...