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. */
}
-
前の記事
javascript 配列の指定した位置に要素を入れる 2022.11.06
-
次の記事
Rust ベクタ(可変配列)の長さを取得する 2022.11.06
コメントを書く