カテゴリ: Kotlin 更新日: 2026/03/07

Kotlinのセット(Set)の基本!重複しないデータ管理のコツを初心者向けにやさしく解説

Kotlinのセット(Set)の基本!重複しないデータ管理のコツ
Kotlinのセット(Set)の基本!重複しないデータ管理のコツ

先生と生徒の会話形式で理解しよう

生徒

「Kotlinで同じデータが何回も入ってしまうのを防ぐ方法ってありますか?」

先生

「はい、それには『セット(Set)』という仕組みを使います。重複を自動でなくしてくれる便利なリストですよ。」

生徒

「へぇー!重複が自動で消えるってすごいですね。どうやって使うんですか?」

先生

「それではKotlinのSet(セット)について、基本から実践まで、初心者にもわかるように丁寧に説明していきましょう!」

1. Set(セット)とは?Kotlinで重複を許さない「箱」の仕組み

1. Set(セット)とは?Kotlinで重複を許さない「箱」の仕組み
1. Set(セット)とは?Kotlinで重複を許さない「箱」の仕組み

Kotlin(ことりん)で複数のデータをまとめて扱うとき、真っ先に思い浮かぶのは「リスト(List)」や「配列」かもしれません。しかし、これらは入れた分だけデータが溜まるため、同じデータが何度も入り込んでしまうことがあります。

たとえば、買い物リストを作ったときに、うっかり「りんご」を2回書いてしまった状態を想像してみてください。

  • りんご
  • バナナ
  • りんご(あ、また書いちゃった!)

このように、同じデータが複数ある状態を「重複(じゅうふく)」と呼びます。プログラミングでは、ユーザーIDやメールアドレスの登録など、重複させたくないデータがよく出てきます。

そこで役立つのがSet(セット)です。Setは数学の「集合」と同じ考え方で、「同じ値は1つしか持てない」という強力なルールを持ったデータの集まりです。もし同じデータを入れようとしても、Setが自動で「それはもう持ってるよ!」と判断して弾いてくれるため、常にユニーク(唯一)なデータだけを管理できるのです。

まずは、プログラミングが初めての方でも分かりやすい簡単なイメージコードを見てみましょう。

 fun main() { // 3つの果物を入れようとしますが、"りんご"が2回登場しています val fruitBasket = setOf("りんご", "バナナ", "りんご")

// 結果を表示すると、"りんご"は1つだけに整理されています
println("バスケットの中身: " + fruitBasket)
println("データの数: " + fruitBasket.size + "個")
}

このコードを実行すると、中身は [りんご, バナナ] となり、個数も「2個」と表示されます。このように、開発者が「重複を消す処理」をわざわざ書かなくても、Setを使うだけで自動的にデータが整理されるのが大きなメリットです。

2. KotlinでSet(セット)を作る方法:重複を自動で取り除く

2. KotlinでSet(セット)を作る方法:重複を自動で取り除く
2. KotlinでSet(セット)を作る方法:重複を自動で取り除く

プログラミングをしていると、「データの中から重複したものを捨てて、ユニークな(唯一の)値だけを取り出したい」という場面がよくあります。Kotlinでこれを実現するのがSet(セット)です。

まずは、初心者の方でも分かりやすい簡単なプログラムで、Setの動きを確認してみましょう。例えば、買い物リストの中に同じ果物が何度も出てきても、Setを使えば自動的に整理されます。


fun main() {
    // 同じ名前が混ざったリストを作成
    val fruits = setOf("りんご", "バナナ", "りんご", "みかん", "バナナ")
    
    // 中身を表示してみる
    println(fruits)
}

[りんご, バナナ, みかん]

実行結果を見ると、入力したときには複数あった「りんご」や「バナナ」が、出力時にはたった1つずつにまとめられているのがわかりますね。これがSetの最大の特徴です。

使い方はとてもシンプルで、setOf()という命令の中に、カンマ区切りでデータを入れるだけです。システムが自動で中身をチェックし、重複があれば1つに集約してくれるため、データ分析やユーザーIDの管理など、「ダブり」を許さない処理に非常に役立ちます。

3. SetとListの違いってなに?

3. SetとListの違いってなに?
3. SetとListの違いってなに?

ここで、SetListの違いを表でまとめておきます:

種類重複OK?順番はある?
List(リスト)OKある
Set(セット)NG(同じデータは1つだけ)なし

たとえば、出席者の名前リストなど、「同じ人を2回カウントしないようにしたい」ときにはSetがぴったりです。

4. MutableSet(可変セット)で後から追加する

4. MutableSet(可変セット)で後から追加する
4. MutableSet(可変セット)で後から追加する

通常のsetOf()は、あとから変更できない「不変セット」です。でも、あとからデータを追加したい場合もありますよね。

そんなときはmutableSetOf()を使って「可変セット(変更できるセット)」を作ります。


fun main() {
    val colors = mutableSetOf("赤", "青", "緑")
    colors.add("黄")
    colors.add("赤") // 重複した「赤」は追加されない
    println(colors)
}

[赤, 青, 緑, 黄]

このように、すでにあるものをもう一度追加しても、セットには入らないのが特徴です。

5. Setの使い道:出席リストのような場面に便利!

5. Setの使い道:出席リストのような場面に便利!
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を使った簡単な検索と確認

6. Setを使った簡単な検索と確認
6. Setを使った簡単な検索と確認

Setには便利な関数があり、データが含まれているかどうかを調べるcontains()という関数があります。


fun main() {
    val fruits = setOf("りんご", "バナナ", "みかん")
    
    if (fruits.contains("バナナ")) {
        println("バナナはあります!")
    } else {
        println("バナナはありません")
    }
}

バナナはあります!

このように、データの中にあるかどうかを素早く調べられるのもSetの魅力です。

Kotlinを基礎からしっかり学びたい人や、 Java経験を活かしてモダンな言語にステップアップしたい人には、 定番の入門書がこちらです。

基礎からわかるKotlinをAmazonで見る

※ Amazon広告リンク

7. Setをリストに変換する方法

7. Setをリストに変換する方法
7. Setをリストに変換する方法

必要に応じて、SetListに変換したいときもあります。toList()という関数を使えば、簡単に変換できます。


fun main() {
    val set = setOf("A", "B", "C")
    val list = set.toList()
    println(list)
}

[A, B, C]

リストに変えることで、「順番どおりに並び替える」といった操作もできます。

関連セミナーのご案内

【未経験OK】Kotlinで始めるプログラミング入門|ゼロから「動く喜び」を体験する60分

「プログラミングを始めたい」を形にする。最新言語Kotlinで楽しむ、ものづくりの第一歩。

本講座は、プログラミング経験が全くない方のためのエントリー講座です。「コードを書くってどういうこと?」という基本から、世界中で使われている最新言語Kotlin(コトリン)を使って、実際にプログラムを動かすまでを体験します。難しい理屈よりも、まずは「自分の手で動かす楽しさ」を最短距離で実感していただきます。

具体的な体験内容と環境

【つくるもの】
簡単な言葉を入力すると自動で返答してくれる「対話型ミニプログラム」や、計算を自動化する「便利ツール」をゼロから作成します。黒い画面に自分の書いた文字が表示される瞬間は、最高の感動体験です。

【開発環境】
プロのエンジニアが実際に使っている開発ツールIntelliJ IDEA(インテリジェイ)をインストールします。ボタン一つで日本語化し、初心者でも迷わず操作できる「魔法の設定」を一緒に行います。

この60分で得られる3つの体験

1. 自分のパソコンが「開発基地」に

プロと同じ道具を揃えることで、明日から一人でもプログラミングを続けられる環境が整います。

2. プログラミングの「仕組み」がスッキリ

「変数」や「型」といった難しい言葉も、身近な例え話で解説。モヤモヤをゼロにします。

3. 「読みやすい」から「直せる」へ

Kotlinは英語に近くて読みやすいのが特徴。自分でコードを読んで、間違いを見つけるコツも伝授します。

※本講座は、パソコン操作が不安な方でも安心して受講いただける完全マンツーマンです。あなたのペースに合わせて、一つずつ丁寧に進めていきます。

セミナー画像

Kotlinで始めるプログラミング入門|ゼロから「動く喜び」を体験

カテゴリの一覧へ
新着記事
New1
Go言語
Go言語のwhile的なforループの使い方!条件式ループの基本を解説
New2
Go言語
Go言語プログラムの実行方法まとめ!VSCode・ターミナルでの実行手順を解説
New3
Swift
Swift意味とは?プログラミング言語・金融・鳥の違いを徹底解説
New4
Swift
Swift 戻り値の扱い方と複数戻り値の返し方|初心者でも分かる関数の基本
人気記事
No.1
Java&Spring記事人気No1
Go言語
Go言語でリダイレクト処理を行う方法(http.Redirect)を初心者向けに解説
No.2
Java&Spring記事人気No2
Swift
Swift開発環境の構築方法を徹底解説!Xcode・Windows・Linux対応
No.3
Java&Spring記事人気No3
Kotlin
Android Studioのインストール手順と初期設定を初心者向けに完全解説!
No.4
Java&Spring記事人気No4
Kotlin
Gradleファイル(build.gradle.kts)の書き方と役割をやさしく解説!Kotlin初心者向け完全ガイド
No.5
Java&Spring記事人気No5
Go言語
Go言語のgo.modファイル完全ガイド!初心者でもわかる仕組みと書き方
No.6
Java&Spring記事人気No6
Go言語
Go言語で条件式を1行で書くコツ!三項演算子の代替と短縮記法
No.7
Java&Spring記事人気No7
Swift
Swift Playgroundの使い方を完全解説!初心者に最適な学習環境の始め方
No.8
Java&Spring記事人気No8
Kotlin
Kotlinの演算子一覧と使い方!算術・比較・論理演算子の基本を解説