【问题标题】:How to count number of occurences of items in an array in Kotlin如何计算 Kotlin 中数组中项目的出现次数
【发布时间】:2020-11-05 06:38:49
【问题描述】:

我想在 kotlin 中计算一个数组列表。我所拥有的是类似于:

val names = listOf("apple", "apple", "orange", "orange", "banana", "pears", "grape", "apricots")

我想要的输出是这样的:

苹果:2 橙色:2 香蕉:1 梨:1 葡萄:1个 杏子:1个

你能帮帮我吗,谢谢

【问题讨论】:

标签: android kotlin intellij-idea


【解决方案1】:

使用eachCountgroupingBy 也可能是一个很好的解决方案。

例如:

val names = listOf("apple", "apple", "orange", "orange", "banana", "pears", "grape", "apricots")
val frequencies = names.groupingBy { it }.eachCount()
print(frequencies)

//{apple=2, orange=2, banana=1, pears=1, grape=1, apricots=1}

【讨论】:

    【解决方案2】:

    您可以使用 HashMap 来计算 ArrayList 中每个单词的出现次数。

    val names = listOf("apple", "apple", "orange", "orange", "banana", "pears", "grape", "apricots")
    val frequencyMap: MutableMap<String, Int> = HashMap()
    
    for (s in names) {
        var count = frequencyMap[s]
        if (count == null) count = 0
        frequencyMap[s] = count + 1
    }
    
    println(frequencyMap)
    

    【讨论】:

      【解决方案3】:

      使用这个:

      val names = listOf("apple", "apple", "orange", "orange", "banana", "pears", "grape", "apricots")
      
      val output = names.groupBy { it }
          .map { "${it.key} : ${it.value.size}" }
          .toString()
      
      print(output)
      

      【讨论】:

        【解决方案4】:

        您可以使用 groupingBy 和 eachcount,

        如果你想检查你可以使用 groupby 之后你可以打印

        val count = names.groupingBy { it }.eachCount()
        println(count)
        

        【讨论】:

          猜你喜欢
          • 2014-03-18
          • 2014-10-16
          • 2012-07-23
          • 2011-12-27
          • 2011-02-08
          • 1970-01-01
          • 2012-11-18
          • 2011-07-02
          • 2015-04-15
          相关资源
          最近更新 更多