Menu
Coddy logo textTech

セットへの要素の追加と削除

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}
challenge icon

チャレンジ

簡単

プロジェクトチームに新しいメンバーを追加し、非アクティブなメンバーを削除することで、チームのコラボレーションシステムを管理するプログラムを作成してください。プログラムは以下の手順を実行する必要があります:

  1. プロジェクト名を表す文字列入力を読み込む
  2. 初期チームメンバーを表す複数の文字列入力を読み込む(入力は "initial_done" を受け取った時点で終了します)
  3. 追加する新しいメンバーを表す複数の文字列入力を読み込む(入力は "add_done" を受け取った時点で終了します)
  4. 削除するメンバーを表す複数の文字列入力を読み込む(入力は "remove_done" を受け取った時点で終了します)
  5. 初期チームメンバーで Set を作成する
  6. add() メソッドを使用して、各新しいメンバーをチームに追加する
  7. remove() メソッドを使用して、指定された各メンバーをチームから削除する
  8. チーム管理の結果を、以下に示す正確な形式で出力する

例えば、プロジェクト名が "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");
  // 残りの出力ステートメントをここに追加してください
}
quiz icon腕試し

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

論理とフローのすべてのレッスン