Kotlinのセット(Set)の基本!重複しないデータ管理のコツを初心者向けにやさしく解説
生徒
「Kotlinで同じデータが何回も入ってしまうのを防ぐ方法ってありますか?」
先生
「はい、それには『セット(Set)』という仕組みを使います。重複を自動でなくしてくれる便利なリストですよ。」
生徒
「へぇー!重複が自動で消えるってすごいですね。どうやって使うんですか?」
先生
「それではKotlinのSet(セット)について、基本から実践まで、初心者にもわかるように丁寧に説明していきましょう!」
1. Set(セット)とは?Kotlinの重複なしリスト
Kotlin(ことりん)でデータをたくさん扱うとき、「リスト」や「配列(はいれつ)」を使いますが、それらには同じデータが何回も入ってしまうことがあります。
たとえば、次のようなデータ:
- りんご
- バナナ
- りんご
このように「りんご」が2回入ってしまっている状態を「重複(じゅうふく)」といいます。
Set(セット)は、この重複を自動でなくしてくれる仕組みです。つまり、「同じものがあったら1つにまとめる」リストです。
2. KotlinでSetを作ってみよう
では、Kotlinでセットを作る基本的な方法を見てみましょう。次のプログラムでは、同じ果物が何度も入っているリストから、重複をなくしたセットを作っています。
fun main() {
val fruits = setOf("りんご", "バナナ", "りんご", "みかん", "バナナ")
println(fruits)
}
[りんご, バナナ, みかん]
setOf()を使うと、重複したデータを自動的に1つにまとめてくれます。
3. SetとListの違いってなに?
ここで、SetとListの違いを表でまとめておきます:
| 種類 | 重複OK? | 順番はある? |
|---|---|---|
| List(リスト) | OK | ある |
| Set(セット) | NG(同じデータは1つだけ) | なし |
たとえば、出席者の名前リストなど、「同じ人を2回カウントしないようにしたい」ときにはSetがぴったりです。
4. MutableSet(可変セット)で後から追加する
通常のsetOf()は、あとから変更できない「不変セット」です。でも、あとからデータを追加したい場合もありますよね。
そんなときはmutableSetOf()を使って「可変セット(変更できるセット)」を作ります。
fun main() {
val colors = mutableSetOf("赤", "青", "緑")
colors.add("黄")
colors.add("赤") // 重複した「赤」は追加されない
println(colors)
}
[赤, 青, 緑, 黄]
このように、すでにあるものをもう一度追加しても、セットには入らないのが特徴です。
5. Setの使い道:出席リストのような場面に便利!
たとえば、イベントの参加者を管理したいとき、同じ名前を何度も記録しないようにするために、Setが活躍します。
fun main() {
val attendees = mutableSetOf<String>()
attendees.add("たろう")
attendees.add("はなこ")
attendees.add("たろう") // 同じ人をもう一度追加しようとしても無視される
println("出席者一覧:")
for (name in attendees) {
println("- $name")
}
}
出席者一覧:
- たろう
- はなこ
このように、Setは「ユニークなデータ(重複しないデータ)」を管理したいときにとても役立ちます。
6. Setを使った簡単な検索と確認
Setには便利な関数があり、データが含まれているかどうかを調べるcontains()という関数があります。
fun main() {
val fruits = setOf("りんご", "バナナ", "みかん")
if (fruits.contains("バナナ")) {
println("バナナはあります!")
} else {
println("バナナはありません")
}
}
バナナはあります!
このように、データの中にあるかどうかを素早く調べられるのもSetの魅力です。
7. Setをリストに変換する方法
必要に応じて、SetをListに変換したいときもあります。toList()という関数を使えば、簡単に変換できます。
fun main() {
val set = setOf("A", "B", "C")
val list = set.toList()
println(list)
}
[A, B, C]
リストに変えることで、「順番どおりに並び替える」といった操作もできます。