Mengakses Nilai
Termasuk bagian Logika dan Alur dalam perjalanan C# di Coddy. Pelajaran 49 dari 66.
Di C#, kita menggunakan Dictionary<TKey, TValue> sebagai padanan HashMap. Setelah menambahkan item ke Dictionary, kamu perlu mengambilnya.
Buat dictionary dengan kunci string dan nilai int:
Dictionary<string, int> studentScores = new Dictionary<string, int>();Tambahkan beberapa entri:
studentScores.Add("John", 95);
studentScores.Add("Mary", 88);Mengakses nilai menggunakan kunci:
int johnScore = studentScores["John"];Setelah menjalankan kode di atas, johnScore berisi:
95Hati-hati! Jika kamu mencoba mengakses key yang tidak ada, kamu akan mendapatkan KeyNotFoundException:
// Ini akan memunculkan exception jika "Bob" tidak ada di dictionary
int bobScore = studentScores["Bob"];Tantangan
MudahBuat method bernama GetValueByKey yang menerima dua argumen:
- Dictionary<string, int> (dictionary).
- string (key) yang akan dicari.
Method tersebut harus mencoba mengakses nilai untuk key yang diberikan, lalu:
- Jika key ada, cetak nilainya.
- Jika key tidak ada, cetak "Key not found".
Coba sendiri
using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
class Program
{
public static void GetValueByKey(Dictionary<string, int> dictionary, string key)
{
// Tulis kodemu di sini
}
static void Main(string[] args)
{
// Baca dictionary dalam format JSON: {"key1":value1,"key2":value2}
string dictionaryInput = Console.ReadLine();
string key = Console.ReadLine();
Dictionary<string, int> dictionary = new Dictionary<string, int>();
// Uraikan string input untuk membuat dictionary
if (!string.IsNullOrEmpty(dictionaryInput))
{
try
{
// Periksa apakah input berformat JSON
if (dictionaryInput.StartsWith("{") && dictionaryInput.EndsWith("}"))
{
// Hapus kurung kurawal
string jsonContent = dictionaryInput.Substring(1, dictionaryInput.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 kunci 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);
dictionary.Add(keyMatch, valueMatch);
}
}
}
// Handle the original format "key1:value1,key2:value2" as fallback
else
{
string[] pairs = dictionaryInput.Split(',');
foreach (string pair in pairs)
{
string[] keyValue = pair.Split(':');
if (keyValue.Length == 2)
{
dictionary.Add(keyValue[0], int.Parse(keyValue[1]));
}
}
}
GetValueByKey(dictionary, key);
}
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