[Kotlin]List(リスト)の重複を削除するには?

Kotlin

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

List(リスト)の重複を削除する方法を紹介します。

スポンサーリンク

方法

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

List(リスト)の重複を削除する方法は、3つあります。

distinct()

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

具体的な方法としては、list.distinct()のように、Listからdistinct()を呼び出します。

val result : List<T> = list.distinct()

上記のdistinct()は、呼び出したリストの重複を削除したListを返します。

重複を削除したMutableListを取得したい場合は、distinct()からtoMutableList()を呼び出します。

val result : MutableList<T> = list.distinct().toMutableList()

使用例

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

distinctBy()

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

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

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

val result : List<T> = list.distinctBy { it }

上記のdistinctBy()は、呼び出したリストの重複を削除したListを返します。

重複を削除したMutableListを取得したい場合は、distinctBy()からtoMutableList()を呼び出します。

val result : MutableList<T> = list.distinctBy{ it }.toMutableList()

使用例

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

toSet()

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

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

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

val result : List<T> = list.toSet().toList()

上記のtoList()は、toSet()を呼び出したリストの重複を削除したListを返します。

重複を削除したMutableListを取得したい場合は、toSet()からtoMutableList()を呼び出します。

val result : MutableList<T> = list.toSet().toMutableList()

使用例

fun main() {
    val numbers = mutableListOf(1, 2, 2, 1, 3, 4, 1, 5, 3)
    
    val result : List<Int> = numbers.toSet().toList()
    
    println(numbers)
    println(result)
}
出力:
[1, 2, 2, 1, 3, 4, 1, 5, 3]
[1, 2, 3, 4, 5]

まとめ

List(リスト)の重複を削除する方法は、次の3つです。

  • distinct()を使う方法
    val result : List<T> = list.distinct()
  • distinctBy()を使う方法
    val result : List<T> = list.distinctBy { it }
  • toSet()を使う方法
    val result : List<T> = list.toSet().toList()

コメント

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