[Kotlin]MutableListの重複を削除するには?

Kotlin

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

MutableList(ミュータブルリスト)の重複を削除する方法を紹介します。

スポンサーリンク

方法

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

MutableList(ミュータブルリスト)の重複を削除する方法は、3つあります。

distinct()

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

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

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

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

上記のtoMutableList()は、distinct()を呼び出したmutbaleListの重複を削除したMutableListを返します。

使用例

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

distinctBy()

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

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

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

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

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

上記のtoMutbaleList()は、distinctBy()を呼び出したMutableListの重複を削除したMutableListを返します。

使用例

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

toSet()

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

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

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

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

上記のtoMutbleList()は、toSet()を呼び出したMutableListの重複を削除したMutableListを返します。

使用例

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

まとめ

MutableListの重複を削除する方法は、次の3つです。

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

コメント

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