kotlin Listの要素を指定して重複していないか確認する

kotlin Listの要素を指定して重複していないか確認する

kotlinで、Listの要素を指定して重複していないか確認する手順を記述してます。唯一の要素を取得することができる「single」を使用して「IllegalArgumentException」が発生しなければ、その値は重複していないことになります。存在しない場合は「NoSuchElementException」が発生します。

環境

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

手順

Listの要素を指定して重複していないか確認するには、「single」で可能です。

List名.single { 条件 }

※ 条件を満たした唯一の要素を取得します。条件を満たすものが2つ以上あると「java.lang.IllegalArgumentException」となります。

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

fun main() {

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

    println(list.single { it == 30 })
    // 30

    val list2 = listOf(10, 20, 30, 30, 50, 60)

    println(list2.single { it == 30 })
    /* Exception in thread "main" java.lang.IllegalArgumentException: 
    Collection contains more than one matching element. */

}

重複した要素があると「java.lang.IllegalArgumentException」が発生します。

アルファベットの大文字と小文字は区別されます。

fun main() {

    val list = listOf("AAA", "aaa", "BBB")

    println(list.single { it == "aaa" })
    // aaa

}

また、存在しない要素を指定した場合も「java.util.NoSuchElementException」が発生します。

fun main() {

    val list = listOf("AAA", "aaa", "BBB")

    println(list.single { it == "ccc" })
    /*Exception in thread "main" 
    java.util.NoSuchElementException: Collection contains no element matching the predicate.*/

}

mutableList

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

fun main() {

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

    println(list.single { it == 30 })
    /* Exception in thread "main" java.lang.IllegalArgumentException: 
    Collection contains more than one matching element. */

}