kotlin Listの要素をグループ化する

kotlin Listの要素をグループ化する

kotlinで、Listの要素をグループ化する手順を記述してます。

環境

  • OS windows11 home
  • java 17.0.2
  • kotlin 1.6.10-release-923

手順

Listの要素をグループ化するには、「groupBy」で可能です。

List名.groupBy({ 条件 })

実際に、使用して文字数でグループ化してみます。

fun main() {

    val list = listOf("java","js","html","php","vba")

    println(list.groupBy({ it.length })) 
    // {4=[java, html], 2=[js], 3=[php, vba]}   

    println(list) // [java, js, html, php, vba]

}

文字数によりグループ化されていることが確認できます。

条件を指定してグループ化することも可能です。例えば、先頭の文字が同じものを大文字化してグループにすることや、

fun main() {

    val list = listOf("java","js","html","php","vba","python")

    println(list.groupBy({ it.first() },{ it.toUpperCase() })) 
    // {j=[4, 2], h=[4], p=[3, 6], v=[3]}

    println(list) // [java, js, html, php, vba, python]

}

数値を偶数・奇数でグループ化したりすることも可能です。

fun main() {

    val list = listOf(11, 22, 33, 44, 55, 66)

    println(list.groupBy({ if (it % 2 == 0) "偶数" else "奇数" }, { it })) 
    // {奇数=[11, 33, 55], 偶数=[22, 44, 66]}   

    println(list) // [10, 20, 30, 40, 50, 60]

}

mutableList

「mutableList」にも使用可能です。

fun main() {

    val list = mutableListOf(11, 22, 33, 44, 55, 66)

    println(list.groupBy({ if (it % 2 == 0) "偶数" else "奇数" }, { it })) 
    // {奇数=[11, 33, 55], 偶数=[22, 44, 66]}   

    println(list) // [10, 20, 30, 40, 50, 60]

}