Mengubah dictionary
Termasuk bagian Logika dan Alur dalam perjalanan C# di Coddy. Pelajaran 50 dari 66.
Dictionary di C# bersifat mutable, artinya kamu dapat mengubahnya setelah membuatnya. Berikut cara umum untuk mengubah Dictionary:
Tambahkan pasangan key-value baru:
Dictionary<string, int> inventory = new Dictionary<string, int>();
inventory.Add("apple", 10);Perbarui nilai key yang sudah ada:
// Pertama, periksa apakah kunci tersebut ada
if (inventory.ContainsKey("apple"))
{
inventory["apple"] = 15; // Perbarui nilai "apple" menjadi 15
}Hapus pasangan kunci-nilai:
// Hapus entri "apple"
inventory.Remove("apple");Hapus semua entri:
// Hapus semua pasangan kunci-nilai
inventory.Clear();Tantangan
MudahBuat method bernama UpdateInventory yang menerima tiga argumen:
- Dictionary<string, int> yang mewakili inventaris
- string yang mewakili nama item
- int yang mewakili kuantitas baru
Method tersebut harus:
- Jika item ada di inventaris, perbarui kuantitasnya
- Jika item tidak ada, tambahkan item tersebut dengan kuantitas yang diberikan
- Cetak inventaris yang telah diperbarui dalam format: "Item: [quantity]" (satu item per baris)
Coba sendiri
using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
class Program
{
public static void UpdateInventory(Dictionary<string, int> inventory, string item, int quantity)
{
// Tulis kodemu di sini
// Cetak inventory yang telah diperbarui
// Jangan hapus ini
foreach (KeyValuePair<string, int> entry in inventory)
{
Console.WriteLine($"{entry.Key}: {entry.Value}");
}
}
// Abaikan kode utama, kode ini mengubah string menjadi HashMap
static void Main(string[] args)
{
Dictionary<string, int> inventory = new Dictionary<string, int>();
// Baca baris pertama untuk memeriksa apakah formatnya JSON
string firstLine = Console.ReadLine();
// Periksa apakah input berformat JSON
if (firstLine != null && firstLine.StartsWith("{") && firstLine.EndsWith("}"))
{
try
{
// Proses input JSON untuk inventory awal
string jsonContent = firstLine.Substring(1, firstLine.Length - 2);
// Pisahkan berdasarkan koma yang tidak berada di dalam tanda kutip
string pattern = @",(?=(?:[^""]*""[^""]*"")*[^""]*$)";
string[] entries = Regex.Split(jsonContent, pattern);
foreach (string entry in entries)
{
// Ambil key dan nilai menggunakan regex
Match match = Regex.Match(entry, @"""([^""]+)""\s*:\s*(\d+)");
if (match.Success)
{
string keyMatch = match.Groups[1].Value;
int valueMatch = int.Parse(match.Groups[2].Value);
inventory.Add(keyMatch, valueMatch);
}
}
// Read the item to update and its quantity
string updateItemJson = Console.ReadLine();
// Check if update item is in JSON format with quotes
Match itemMatch = Regex.Match(updateItemJson, @"""([^""]+)""");
string updateItem = itemMatch.Success ? itemMatch.Groups[1].Value : updateItemJson;
int updateQuantity = int.Parse(Console.ReadLine());
UpdateInventory(inventory, updateItem, updateQuantity);
}
catch (Exception ex)
{
Console.WriteLine($"Error parsing input: {ex.Message}");
}
}
else
{
try
{
// Process traditional input format
int initialCount = int.Parse(firstLine);
for (int i = 0; i < initialCount; i++)
{
string item = Console.ReadLine();
int quantity = int.Parse(Console.ReadLine());
inventory.Add(item, quantity);
}
// Read the item to update and its quantity
string updateItem = Console.ReadLine();
int updateQuantity = int.Parse(Console.ReadLine());
UpdateInventory(inventory, updateItem, updateQuantity);
}
catch (Exception ex)
{
Console.WriteLine($"Error parsing input: {ex.Message}");
}
}
}
}Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika dan Alur
1array Multidimensi
Dasar-Dasar array 2DMendeklarasikan dan Menginisialisasi array 2DMengakses Elemen array 2DPerulangan Bersarang dengan array 2Darray BergerigiOperasi Matriks UmumRangkuman: array Multidimensi4Teknik Alur Kontrol
Pengembalian DiniKlausa PenjagaPernyataan Lompatan (goto)Break dan ContinueMeratakan Percabangan Bersarang7Operator Logika Lanjutan
Evaluasi Hubung SingkatOperator Logika PercabanganPrioritas OperatorRingkasan Operator Lanjutan2Pengambilan Keputusan Tingkat Lanjut
Beberapa KondisiLogika Boolean yang KompleksPerbandingan If dan SwitchPernyataan Switch BersarangUlasan: Pengambilan Keputusan Tingkat Lanjut5Penanganan Exception
Dasar Try-CatchJenis ExceptionBeberapa Blok CatchBekerja dengan fileBlok FinallyUsing vs. Try-FinallyException KustomRingkasan: Penanganan error3Peningkatan Loop
Performa LoopIterasi yang KompleksSetiap Jenis LoopRefactoring LoopRangkuman: Loop yang Dioptimalkan6Penanganan Null
Dasar Referensi NullTipe Nilai NullablePola Pemeriksaan NullPemrograman DefensifRingkasan: Keamanan Null9HashMap Bagian 1
Apa itu HashMap?Deklarasikan HashMapPeriksa Apakah Kunci AdaMengakses NilaiMengubah dictionaryRingkasan HashMapLatihan sendiri: Compiler C# online