Menu
Coddy logo textTech

集合の作成

CoddyのSwiftジャーニー「ロジックとフロー」セクションの一部 — レッスン 18/56。

Set は、一意の値の順序のないコレクションです。すべてのメンバーに対して同じ要素型であり、重複は許可されず、予測可能な反復順序もありません。

var colors: Set<String> = ["red", "green", "blue", "red"]
print(colors.count)              // 3 (重複した "red" は除外されます)

型アノテーション Set<String> は、リテラル形式では必須です。なぜなら、["a", "b"] 単体では Array として推論されてしまうからです。

3つの主要な操作:containsinsert、およびremove。後者の2つは、変更が意味のあるものだったかどうかに関する情報を返します。

colors.insert("yellow")         // 追加します
colors.insert("red")            // すでに存在するため、効果はありません
colors.contains("green")        // true
colors.remove("blue")           // "blue"を返すか、存在しない場合はnilを返します

配列からセットを構築すると、1ステップで重複が排除されます:

let unique = Set([1, 2, 2, 3, 3, 3])
// 3つの要素、正確な順序は保証されません
challenge icon

チャレンジ

初心者

1行の入力を読み込みます。これはカンマで区切られた単語のリストです(重複が含まれる可能性があります)。

以下の3行を出力してください:

  1. ユニークな単語の数(Setを使用してください)
  2. アルファベット順にソートされ、,で結合されたユニークな単語
  3. 入力にswiftという単語が含まれている場合はtrue、そうでない場合はfalsecontainsを使用してください)

入力がswift,ruby,go,swift,go,rustの場合、出力は以下のようになります:

4
go,ruby,rust,swift
true

チートシート

Set – 一意の値の順序付けられていないコレクション。配列リテラル構文を使用する場合は、型注釈が必要です:

var colors: Set<String> = ["red", "green", "blue", "red"]
print(colors.count) // 3 (重複は削除されます)

主な操作:

colors.insert("yellow")      // 要素を追加
colors.contains("green")     // true
colors.remove("blue")        // "blue"を返す、存在しない場合はnilを返す

配列からセットを作成して重複を排除する:

let unique = Set([1, 2, 2, 3, 3, 3]) // 3つの要素

自分で試してみよう

let words = readLine()!.components(separatedBy: ",")

// TODO: Setで重複を排除、要素数を出力、ソートして結合、"swift"が含まれているか確認
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

ロジックとフローのすべてのレッスン