セットの作成
CoddyのDartジャーニー「論理とフロー」セクションの一部 — レッスン 18/65。
Setが何であるかを理解したところで、次は作成方法を学びましょう。Dartでは、数学の集合の書き方と同じように、波括弧{}を使用し、要素をカンマで区切ってSetを作成します。
Set<String> colors = {'red', 'blue', 'green'};
print(colors); // {red, blue, green}この構文を Map の作成と混同しないことが重要です。どちらも波括弧を使用しますが、Set は値のみを保持するのに対し、Map はコロンで区切られたキーと値のペアを保持します。空の Set は、空の Map と区別するために、型を明示的に宣言する必要があります。
Set<String> emptySet = <String>{}; // 空のSet
Map<String, int> emptyMap = {}; // 空のMap重複する値を使用して Set を作成することもできますが、重複は自動的に削除され、最終的なコレクションには一意の要素のみが残ることに注意してください。
チャレンジ
簡単ブログ投稿のユニークなタグの Set を作成して、ブログのタグ付けシステムを管理するプログラムを作成してください。プログラムは以下の手順を実行する必要があります:
- ブログ投稿のタイトルを表す文字列入力を読み込む
- 投稿に追加するタグを表す複数の文字列入力を読み込む(入力は
"done"を受け取った時点で終了します) - ユニークなタグを格納するための文字列の Set を作成する
- 各タグを Set に追加する(重複は自動的に削除されます)
- 以下の形式でブログのタグ付け結果を出力する
例えば、ブログのタイトルが "Introduction to Dart Programming" で、タグが "programming", "dart", "tutorial", "programming", "beginner" の場合、プログラムは以下のように出力する必要があります:
Blog Post: Introduction to Dart Programming
Tags added: [programming, dart, tutorial, programming, beginner]
Unique tags: {programming, dart, tutorial, beginner}
Total unique tags: 4
Status: Blog post tagged successfullyブログのタイトルが "Web Development Tips" で、タグが "web", "html", "css", "web", "html", "javascript" の場合、プログラムは以下のように出力する必要があります:
Blog Post: Web Development Tips
Tags added: [web, html, css, web, html, javascript]
Unique tags: {web, html, css, javascript}
Total unique tags: 4
Status: Blog post tagged successfullyブログのタイトルが "Getting Started" で、タグが "guide", "basics" の場合、プログラムは以下のように出力する必要があります:
Blog Post: Getting Started
Tags added: [guide, basics]
Unique tags: {guide, basics}
Total unique tags: 2
Status: Blog post tagged successfullyプログラムは波括弧 {} 構文を使用して Set を作成し、Set がどのように重複を自動的に処理するかを示す必要があります。最初に入力されたすべてのタグをリストに保存して何が入力されたかを表示し、その後に Set を作成してユニークなタグを表示してください。Set は、波括弧を使用した標準的な Set 形式で内容を表示する必要があります。
自分で試してみよう
import 'dart:io';
void main() {
// ブログ記事のタイトルを読み込む
String? title = stdin.readLineSync();
// "done" が入力されるまでタグを読み込む
List<String> allTags = [];
String? tag;
while ((tag = stdin.readLineSync()) != "done") {
if (tag != null) {
allTags.add(tag);
}
}
// TODO: ここにコードを記述してください
// タグのリストから Set を作成し、ユニークなタグを取得する
// ユニークなタグの総数を計算する
// 結果を出力する
print("Blog Post: $title");
print("Tags added: $allTags");
// ユニークなタグを Set 形式で出力する
// ユニークなタグの総数を出力する
// ステータスメッセージを出力する
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
論理とフローのすべてのレッスン
1リスト操作の応用
リストのプロパティ: first と lastリストの状態: isEmpty と isNotEmptyリストの反転リストへの追加: insertリストの削除: removeWhereリスト内の検索: indexOfリストのソートリストのシャッフルまとめ - リストオーガナイザー