Подсчитать количество - PullRequest
1 голос
/ 10 марта 2019

У меня есть этот код:

fun main(args:Array<String>){
var a = "banana, eat, one"
var a1 = a1.split("a").toMutableList()
a1.sortBy { it.toCharArray().count { it == 'a' } }
} 

Этот код позволяет мне отсортировать список a1 по номеру a, но для каждого слова (банан, съесть, один) я бы хотел указать число a. Я подумал создать HashMap примерно так: (Банан, 3) (Есть, 1) (Один, 0)

Но я не знаю, есть ли функция, которая позволяет мне это делать?

Не могли бы вы мне помочь?

Спасибо.

Ответы [ 3 ]

1 голос
/ 10 марта 2019

Ваш существующий код не скомпилирован, но я предполагаю, что вы хотели использовать a во второй строке и разделить на ,. Если это так, вы можете использовать associateWith, чтобы создать Map, где ключами являются ваши слова, а значения - это количество 'a' в каждом:

val a = "banana, eat, one"
val a1 = a.split(", ").toMutableList()
val a2 = a1.associateWith { word -> word.count { char -> char == 'a' } } 

println(a2) // {banana=3, eat=1, one=0}
0 голосов
/ 10 марта 2019
fun main(args:Array<String>){
    val input = "banana, eat, one"
    // split the words
    val split = input.split(",")

    val map = HashMap<String, Int>()
    for (word in split) {
        var countA = 0

        // count the character 'a' per word
        for (character in word) {
            if (character == 'a' || character == 'A') {
                countA++
            }
        }
        map[word] = countA
    }
    println(map)
}
0 голосов
/ 10 марта 2019
"banana, eat, one".split(",").associateBy({ it }, { it.count { it.toLowerCase() == 'a' } })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...