kotlin Listの要素を指定した数と間隔で分ける

kotlin Listの要素を指定した数と間隔で分ける

kotlinで、Listの要素を指定した数と間隔で分ける手順を記述してます。「windowed」を使って数や間隔を指定します。

環境

  • OS windows11 home
  • java 19.0.1
  • kotlin 1.7.20-release-201

手順

Listの要素を指定した数と間隔で分けるには、「windowed」で可能です。

List名.windowed(size = 数, step = 間隔, partialWindows = 数が違ってもまとめるかどうか)

実際に、使用してみます。

fun main() {

    val list = listOf(10, 20, 30, 40, 50) 

    println(list.windowed(size = 2, step = 2))
    // [[10, 20], [30, 40]]

    println(list.windowed(size = 2, step = 2, partialWindows = true))
    // [[10, 20], [30, 40], [50]]

    println(list.windowed(size = 3, step = 2, partialWindows = true))
    // [[10, 20, 30], [30, 40, 50], [50]]

}

分けられていることが確認できます。

サイズを超えている場合は、空の配列が返り、間隔が超えているとその後の値は取得されません。

fun main() {

    val list = listOf(10, 20, 30, 40, 50) 

    println(list.windowed(size = 10, step = 2))
    // []

    println(list.windowed(size = 2, step = 10))
    // [[10, 20]]

}

mutableList

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

fun main() {

    val list = mutableListOf(10, 20, 30, 40, 50) 

    println(list.windowed(size = 2, step = 2))
    // [[10, 20], [30, 40]]

    println(list.windowed(size = 2, step = 2, partialWindows = true))
    // [[10, 20], [30, 40], [50]]

    println(list.windowed(size = 3, step = 2, partialWindows = true))
    // [[10, 20, 30], [30, 40, 50], [50]]

}