kotlin Listの要素を検索する

kotlin Listの要素を検索する

kotlinで、Listの要素を検索する手順を記述してます。「binarySearch」に検索したい値を指定することで可能です。

環境

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

手順

Listの要素を検索するには、「binarySearch」で可能です。

List名.binarySearch(検索する値)

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

fun main() {

    val list = listOf(1, 2, 3, 4, 5, 10)

    println(list.binarySearch(2)) // 1
    println(list.binarySearch(3)) // 2
    println(list.binarySearch(10)) // 5

    println(list.binarySearch(6)) // -6

}

値から位置が取得されていることが確認できます。

Listの要素が重複していると、最初に見つかった位置が返ります。

fun main() {

    val list = listOf(1, 2, 2, 3, 5, 5)

    println(list.binarySearch(2)) // 2
    println(list.binarySearch(3)) // 3
    println(list.binarySearch(5)) // 4

}

また、Listがソートされていない場合は正しい結果が得られません。

fun main() {

    val list = listOf(1, 2, 3, 4, 55, 10)

    println(list.binarySearch(2)) // 1
    println(list.binarySearch(3)) // 2
    println(list.binarySearch(10)) // -5

    println(list.binarySearch(6)) // -5

}

範囲を指定して検索することも可能です。

fun main() {

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

    println(list.binarySearch(element = 30, fromIndex = 0, toIndex = 3)) // 2
    println(list.binarySearch(element = 30, fromIndex = 1, toIndex = 3)) // 2

}

mutableList

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

fun main() {

    val list = mutableListOf(1, 2, 3, 4, 5, 10)

    println(list.binarySearch(2)) // 1
    println(list.binarySearch(3)) // 2
    println(list.binarySearch(10)) // 5

    println(list.binarySearch(6)) // -6

}