Menu
Coddy logo textTech

הסרת רשומות מ־Map

חלק מהיחידה לוגיקה וזרימת התוכנית במסלול ה-Dart של Coddy. שיעור 30 מתוך 65.

בעת ניהול נתונים ב־Map, לעיתים קרובות תצטרך להסיר רשומות שכבר אין בהן צורך. המתודה remove() מספקת דרך פשוטה למחוק זוג מפתח-ערך ממפה באמצעות המפתח שלו.

המתודה remove() מקבלת פרמטר יחיד: המפתח של הרשומה שברצונך למחוק. כשקוראים לה, היא מסירה מהמפה גם את המפתח וגם את הערך המשויך אליו. אם המפתח לא קיים במפה, המתודה פשוט לא עושה דבר, מבלי לגרום לשגיאה.

Map<String, double> inventory = {
  'Laptop': 999.99,
  'Mouse': 25.50,
  'Keyboard': 75.00
};

// הסר את העכבר מהמלאי
inventory.remove('Mouse');
print(inventory);  // {Laptop: 999.99, Keyboard: 75.0}

// ניסיון להסיר פריט שאינו קיים לא עושה דבר
inventory.remove('Tablet');
print(inventory);  // {Laptop: 999.99, Keyboard: 75.0}

השיטה הזאת חיונית לשמירה על מפות נקיות ועדכניות באפליקציות שלך. בין אם אתה מנהל מלאי, נתוני משתמשים או אוסף אחר שבו צריך להסיר פריטים, remove() מספקת דרך בטוחה ויעילה למחיקת רשומות לפי המפתח שלהן.

challenge icon

אתגר

קל

צרו תוכנית שמנהלת שירות הזרמת מוזיקה דיגיטלי באמצעות מעקב אחר ספריות שירים והסרת שירים שאינם זמינים עוד עקב בעיות רישוי. התוכנית שלכם צריכה:

  1. לקרוא קלט מסוג מחרוזת שמייצג את שם שירות הזרמת המוזיקה
  2. לקרוא כמה זוגות של קלטים שמייצגים כותרות שירים ומספרי ההזרמות שלהם (הקלט יסתיים כשתקבלו "library_done")
  3. לקרוא כמה קלטים מסוג מחרוזת שמייצגים שירים שיש להסיר עקב בעיות רישוי (הקלט יסתיים כשתקבלו "removal_done")
  4. ליצור Map לאחסון כותרות השירים כמפתחות ומספרי ההזרמות שלהם כערכים
  5. להשתמש בשיטה remove() כדי להסיר מהספרייה כל שיר שצוין
  6. לחשב את הנתונים הסטטיסטיים של הספרייה ולהדפיס את דוח ההסרה בדיוק בפורמט שמוצג למטה

לדוגמה, אם שם השירות הוא "MusicStream Pro", הספרייה כוללת את "Bohemian Rhapsody" עם 2500000 הזרמות, את "Imagine" עם 1800000 הזרמות, את "Hotel California" עם 2200000 הזרמות, את "Stairway to Heaven" עם 1900000 הזרמות, והשירים להסרה הם "Imagine", "Yesterday", "Hotel California", התוכנית שלכם צריכה להפיק:

Service: MusicStream Pro
Original Library: {Bohemian Rhapsody: 2500000, Imagine: 1800000, Hotel California: 2200000, Stairway to Heaven: 1900000}
Removal Process:
Removing 'Imagine': Song removed (had 1800000 streams)
Removing 'Yesterday': Song not found in library
Removing 'Hotel California': Song removed (had 2200000 streams)
Updated Library: {Bohemian Rhapsody: 2500000, Stairway to Heaven: 1900000}
Library Statistics:
Songs before removal: 4
Songs after removal: 2
Songs successfully removed: 2
Songs not found: 1
Total streams lost: 4000000
Remaining total streams: 4400000
Status: Library update completed

אם שם השירות הוא "SoundWave", הספרייה כוללת את "Shape of You" עם 3200000 הזרמות, את "Blinding Lights" עם 2800000 הזרמות, את "Someone Like You" עם 2100000 הזרמות, והשירים להסרה הם "Blinding Lights", "Perfect", התוכנית שלכם צריכה להפיק:

Service: SoundWave
Original Library: {Shape of You: 3200000, Blinding Lights: 2800000, Someone Like You: 2100000}
Removal Process:
Removing 'Blinding Lights': Song removed (had 2800000 streams)
Removing 'Perfect': Song not found in library
Updated Library: {Shape of You: 3200000, Someone Like You: 2100000}
Library Statistics:
Songs before removal: 3
Songs after removal: 2
Songs successfully removed: 1
Songs not found: 1
Total streams lost: 2800000
Remaining total streams: 5300000
Status: Library update completed

אם שם השירות הוא "AudioHub", הספרייה כוללת את "Bad Guy" עם 1500000 הזרמות, את "Watermelon Sugar" עם 1700000 הזרמות, את "Levitating" עם 1400000 הזרמות, את "Good 4 U" עם 1600000 הזרמות, והשירים להסרה הם "Bad Guy", "Levitating", "Good 4 U", "Drivers License", התוכנית שלכם צריכה להפיק:

Service: AudioHub
Original Library: {Bad Guy: 1500000, Watermelon Sugar: 1700000, Levitating: 1400000, Good 4 U: 1600000}
Removal Process:
Removing 'Bad Guy': Song removed (had 1500000 streams)
Removing 'Levitating': Song removed (had 1400000 streams)
Removing 'Good 4 U': Song removed (had 1600000 streams)
Removing 'Drivers License': Song not found in library
Updated Library: {Watermelon Sugar: 1700000}
Library Statistics:
Songs before removal: 4
Songs after removal: 1
Songs successfully removed: 3
Songs not found: 1
Total streams lost: 4500000
Remaining total streams: 1700000
Status: Library update completed

התוכנית שלכם חייבת להשתמש בשיטה remove() כדי למחוק שירים מה-Map. עקבו אחר השירים שהוסרו בהצלחה ואחר אלה שלא נמצאו. חשבו את סך ההזרמות שאבדו באמצעות חיבור מספרי ההזרמות של השירים שהוסרו בהצלחה. פורמט הקלט יהיה: שם השירות, ולאחר מכן כותרות שירים ומספרי הזרמות לסירוגין (כמחרוזות שיש להמיר למספרים שלמים), עד "library_done", ולאחר מכן כותרות השירים להסרה עד "removal_done".

נסו בעצמכם

import 'dart:io';

void main() {
  // קראו את שם השירות
  String? serviceName = stdin.readLineSync();
  
  // צרו Map לאחסון שמות השירים ומספרי ההשמעות שלהם
  Map<String, int> songLibrary = {};
  
  // קראו את נתוני ספריית השירים
  while (true) {
    String? input = stdin.readLineSync();
    if (input == "library_done") break;
    
    String songTitle = input!;
    String? streamCountStr = stdin.readLineSync();
    int streamCount = int.parse(streamCountStr!);
    songLibrary[songTitle] = streamCount;
  }
  
  // קראו את השירים שיש להסיר
  List<String> songsToRemove = [];
  while (true) {
    String? input = stdin.readLineSync();
    if (input == "removal_done") break;
    songsToRemove.add(input!);
  }
  
  // TODO: כתבו את הקוד שלכם למטה
  // בצעו את הסרת השירים באמצעות המתודה remove()
  // עקבו אחר נתונים סטטיסטיים והפיקו את פורמט הפלט הנדרש
  
  // הדפיסו את התוצאות בפורמט הנדרש
  // זכרו לכלול: שם השירות, הספרייה המקורית, תהליך ההסרה, 
  // הספרייה המעודכנת ונתונים סטטיסטיים של הספרייה
}
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה לוגיקה וזרימת התוכנית

תרגלו בעצמכם: קומפיילר Dart אונליין