[Kotlin]配列(Array)の重複を削除するには?

Kotlin

どうも、ちょげ(@chogetarou)です。

配列(Array)の重複を削除する方法を紹介します。

スポンサーリンク

方法

インターフェース, インターネット, プログラム, ブラウザ, Www

配列(Array)の重複を削除する方法は、3つあります。

distinct()

1つ目は、distinct()を使う方法です。

まず、配列からdistinct()を呼び出します。

そして、distinct()からtoTypedArray()を呼び出します。

val result : Array<T> = array.distinct().toTypedArray()

上記のtoTypedArray()は、distinct()を呼び出した配列の重複を削除したArrayを返します。

使用例

fun main() {
    val numbers = arrayOf(1, 2, 2, 1, 3, 4, 1, 5, 3)
    
    val result : Array<Int> = numbers.distinct().toTypedArray()
    
    println(numbers.contentToString())
    println(result.contentToString())
}
出力:
[1, 2, 2, 1, 3, 4, 1, 5, 3]
[1, 2, 3, 4, 5]

distinctBy()

2つ目は、distinctBy()を使う方法です。

まず、配列からdistinctBy{}を呼び出します。

distinctBy{}のクロージャーに、itを記述します。

そして、distinctBy{}からtoTypedArray()を呼び出します。

val result : Array<T> = array.distinctBy { it }.toTypedArray()

上記のtoTypedArray()は、distinctBy()を呼び出した配列の重複を削除したArrayを返します。

使用例

fun main() {
    val numbers = arrayOf(1, 2, 2, 1, 3, 4, 1, 5, 3)
    
    val result : Array<Int> = numbers.distinctBy{ it }.toTypedArray()
    
    println(numbers.contentToString())
    println(result.contentToString())
}
出力:
[1, 2, 2, 1, 3, 4, 1, 5, 3]
[1, 2, 3, 4, 5]

toSet()

3つ目は、toSet()を使う方法です。

まず、配列からtoSet()を呼び出します。

そして、toSet()からtoTypedArray()を呼び出します。

val result : Array<T> = array.toSet().toTypedArray()

上記のtoTypedArray()は、toSet()を呼び出した配列の重複を削除したArrayを返します。

使用例

fun main() {
    val numbers = arrayOf(1, 2, 2, 1, 3, 4, 1, 5, 3)
    
    val result : Array<Int> = numbers.toSet().toTypedArray()
    
    println(numbers.contentToString())
    println(result.contentToString())
}
出力:
[1, 2, 2, 1, 3, 4, 1, 5, 3]
[1, 2, 3, 4, 5]

まとめ

配列(Array)の重複を削除する方法は、次の3つです。

  • distinct()を使う方法
    val result : Array<T> = array.distinct().toTypedArray()
  • distinctBy()を使う方法
    val result : Array<T> = array.distinctBy { it }.toTypedArray()
  • toSet()を使う方法
    val result : Array<T> = array.toSet().toTypedArray()

コメント

タイトルとURLをコピーしました