Преобразование значений карты Котлина - вычисление суммы в списке и возврат карты - PullRequest
0 голосов
/ 21 декабря 2018

Я пытаюсь создать карту хэштегов и сумму соответствующих транзакций.Я начинаю со списка транзакций.Каждый может иметь несколько хэштегов внутри.В convertToSingleHashtagPerTransaction я извлекаю каждый хэштег и добавляю транзакции в список, чтобы у каждой транзакции был только один хэштег.Затем я группирую по хэштегу и, наконец, хочу избавиться от объекта Transaction и получить карту String (хэштег), Double (сумма соответствующих транзакций).

val hashtagsAmountMap = transactions
            .filter { !it.note.isNullOrEmpty() }
            .filter { it.note!!.contains(HASHTAG_LEFT_SIDE) }
            .flatMap { convertToSingleHashtagPerTransaction(it) }
            .groupBy { it.note }
            .onEach {
                it.value
                        .map { it.inGlobalCurrency!! }
                        .sumByDouble { it }
            }

private fun convertToSingleHashtagPerTransaction(t: Transaction): List<Transaction> {
    val note = t.note
    if (note != null) {
        return extractHashtags(note)
                .map {
                    t.copy(note = it.toUpperCase())
                }
    } else {
        return arrayListOf()
    }
}

В конце концов, я получаю Список вместо Списка.

1 Ответ

0 голосов
/ 21 декабря 2018

Как только я отправил вопрос в StackOverflow, я сам нашел ответ:

val hashtagsAmountMap = transactions
            .filter { !it.note.isNullOrEmpty() }
            .filter { it.note!!.contains(HASHTAG_LEFT_SIDE) }
            .flatMap { convertToSingleHashtagPerTransaction(it) }
            .groupBy { it.note }
            .mapValues { entry ->
                entry.value
                        .map { it.amountGlobalCurrency!! }
                        .sum()
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...