セットへの要素の追加と削除
CoddyのDartジャーニー「論理とフロー」セクションの一部 — レッスン 19/65。
Set を作成したら、新しい要素を追加したり既存の要素を削除したりして、その内容を変更する必要が頻繁に生じます。add() メソッドと remove() メソッドは、セットの要素を管理するための簡単な方法を提供します。
add()メソッドは、セットに新しい要素を挿入しようとします。しかし、セットは一意の値のみを格納するため、すでに存在する要素を追加しようとしても、メソッドは何もしません。エラーは発生せず、セットは変更されないままです。
Set<String> usernames = {'alice', 'bob', 'charlie'};
usernames.add('diana'); // 'diana' を正常に追加します
usernames.add('alice'); // 何もしません - 'alice' は既に存在します
print(usernames); // {alice, bob, charlie, diana}remove() メソッドは、削除したい値を受け取り、それをセットから削除することで機能します。要素がセット内に存在しない場合、このメソッドは何もしないため、事前に確認しなくても安全に使用できます。
usernames.remove('bob'); // 'bob' を削除します
usernames.remove('unknown'); // 何もしません - 要素が見つかりません
print(usernames); // {alice, charlie, diana}チャレンジ
簡単プロジェクトチームに新しいメンバーを追加し、非アクティブなメンバーを削除することで、チームのコラボレーションシステムを管理するプログラムを作成してください。プログラムは以下の手順を実行する必要があります:
- プロジェクト名を表す文字列入力を読み込む
- 初期チームメンバーを表す複数の文字列入力を読み込む(入力は
"initial_done"を受け取った時点で終了します) - 追加する新しいメンバーを表す複数の文字列入力を読み込む(入力は
"add_done"を受け取った時点で終了します) - 削除するメンバーを表す複数の文字列入力を読み込む(入力は
"remove_done"を受け取った時点で終了します) - 初期チームメンバーで Set を作成する
add()メソッドを使用して、各新しいメンバーをチームに追加するremove()メソッドを使用して、指定された各メンバーをチームから削除する- チーム管理の結果を、以下に示す正確な形式で出力する
例えば、プロジェクト名が "Mobile App Development"、初期メンバーが "Alice", "Bob", "Charlie"、追加する新メンバーが "Diana", "Alice", "Eve"、削除するメンバーが "Bob", "Frank" の場合、プログラムは以下のように出力する必要があります:
Project: Mobile App Development
Initial team: {Alice, Bob, Charlie}
Adding new members: [Diana, Alice, Eve]
After adding members: {Alice, Bob, Charlie, Diana, Eve}
Removing members: [Bob, Frank]
Final team: {Alice, Charlie, Diana, Eve}
Team size: 4
Status: Team updated successfullyプロジェクト名が "Website Redesign"、初期メンバーが "John", "Sarah"、追加する新メンバーが "Mike", "John"、削除するメンバーが "Sarah", "Unknown" の場合、プログラムは以下のように出力する必要があります:
Project: Website Redesign
Initial team: {John, Sarah}
Adding new members: [Mike, John]
After adding members: {John, Sarah, Mike}
Removing members: [Sarah, Unknown]
Final team: {John, Mike}
Team size: 2
Status: Team updated successfullyプロジェクト名が "Data Analysis"、初期メンバーが "Emma"、追加する新メンバーが "Tom", "Lisa"、削除するメンバーが "Emma" の場合、プログラムは以下のように出力する必要があります:
Project: Data Analysis
Initial team: {Emma}
Adding new members: [Tom, Lisa]
After adding members: {Emma, Tom, Lisa}
Removing members: [Emma]
Final team: {Tom, Lisa}
Team size: 2
Status: Team updated successfullyプログラムは、すでに存在するメンバーを追加しようとしたときに add() メソッドが何もしないこと、および存在しないメンバーを削除しようとしたときに remove() メソッドが何もしないことを実証する必要があります。どのような操作が試みられたかを示すために入力リストを保存し、各操作の後に Set の内容を表示して、Set のユニークな性質を示してください。
チートシート
add() を使用して Set に要素を挿入します。要素が既に存在する場合、何も起こりません。
Set<String> usernames = {'alice', 'bob', 'charlie'};
usernames.add('diana'); // 'diana' を正常に追加します
usernames.add('alice'); // 何もしません - 'alice' は既に存在します
print(usernames); // {alice, bob, charlie, diana}remove() を使用して Set から要素を削除します。要素が存在しない場合、何も起こりません。
usernames.remove('bob'); // 'bob' を削除します
usernames.remove('unknown'); // 何もしません - 要素が見つかりません
print(usernames); // {alice, charlie, diana}自分で試してみよう
import 'dart:io';
void main() {
// プロジェクト名を読み込む
String? projectName = stdin.readLineSync();
// 初期のチームメンバーを読み込む
List<String> initialMembers = [];
String? member;
while ((member = stdin.readLineSync()) != "initial_done") {
initialMembers.add(member!);
}
// 追加する新しいメンバーを読み込む
List<String> membersToAdd = [];
while ((member = stdin.readLineSync()) != "add_done") {
membersToAdd.add(member!);
}
// 削除するメンバーを読み込む
List<String> membersToRemove = [];
while ((member = stdin.readLineSync()) != "remove_done") {
membersToRemove.add(member!);
}
// TODO: 以下にコードを記述してください
// 初期のチームメンバーでSetを作成します
// add()メソッドを使用して新しいメンバーを追加します
// remove()メソッドを使用してメンバーを削除します
// 必要な形式で結果を出力します
print("Project: $projectName");
// 残りの出力ステートメントをここに追加してください
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
論理とフローのすべてのレッスン
1リスト操作の応用
リストのプロパティ: first と lastリストの状態: isEmpty と isNotEmptyリストの反転リストへの追加: insertリストの削除: removeWhereリスト内の検索: indexOfリストのソートリストのシャッフルまとめ - リストオーガナイザー