Dictionary (Icomparable dan IComparer) Eka, Erick, Reddy © Sekolah Tinggi Teknik Surabaya 1
» Setiap array memiliki method SORT untuk mengurutkan element-element array » Secara default Ascending » Syntax: Array.Sort(varArray); 2 © Sekolah Tinggi Teknik Surabaya
» Priority Queue adalah sebuah array yang memiliki prioritas. Dengan kata lain, data yang ada dalam array tersebut akan diurutkan berdasarkan prioritas. » Contoh: class Mahasiswa { public String nama; public String nrp; public Double ipk; } 3 © Sekolah Tinggi Teknik Surabaya Salah satu dari atribut tersebut dapat dijadikan prioritas
» Prioritas dapat berupa: Nama NRP IPK » Untuk itu perlu adanya sebuah method untuk membandingkan ˃ IComparable “Dapat dibandingkan” ˃ IComparer “Pembanding” 4 © Sekolah Tinggi Teknik Surabaya Ascending atau Descending
class Mahasiswa : IComparable { public String nama; public String nrp; public Double ipk; int IComparable.CompareTo(object obj) { Mahasiswa c = (Mahasiswa)obj; return this.nrp.CompareTo(c.nrp); //return String.Compare(this.nrp, c.nrp); } 5 © Sekolah Tinggi Teknik Surabaya
private class sortIPKAscHelper : IComparer { int IComparer.Compare(object a, object b) { Mahasiswa c1 = (Mahasiswa)a; Mahasiswa c2 = (Mahasiswa)b; if (c1.ipk > c2.ipk) return 1; if (c1.ipk < c2.ipk) return -1; else return 0; } 6 © Sekolah Tinggi Teknik Surabaya
public static IComparer sortIPKAscanding() { return (IComparer)new sortIPKAscHelper(); } 7 © Sekolah Tinggi Teknik Surabaya
Nilai -1 akan dikeluarkan terlebih dahulu Nilai 0 akan dikeluarkan berikutnya Nilai 1 akan dikeluarkan pada urutan terakhir Sehingga, beri nilai -1 pada data yang ingin dikeluarkan terleih dahulu
9 © Sekolah Tinggi Teknik Surabaya Collection SetList Dictionary Stack Queue Linked List HashSet SortedSet Menampung seluruh jenis data IndexUnik Associative
» Persamaan: ˃Merupakan associative array ˃Pasangan Key dan Value » Perbedaan: 10 © Sekolah Tinggi Teknik Surabaya DictionaryHashTable Lebih baru, pengembanganLebih tua, lebih lambat System.Collection.GenericSystem.Collection Data yang disimpan ditentukan jenisnyaSeluruh data disimpan sebagai Object Dictionary dictionary = new Dictionary (); Hashtable numbers = new Hashtable();
» Hashtable and Dictionary are collection of data structures to hold data as key-value pairs. » Dictionary is generic type, hash table is not a generic type. » The Hashtable is a weakly typed data structure, so you can add keys and values of any Object Type to the Hashtable. » The Dictionary class is a strongly types and you must specify the data types for both the key and value. 11 © Sekolah Tinggi Teknik Surabaya
Syntax: Dictionary varName = new Dictionary (); Contoh: Dictionary kamus = new Dictionary (); 12 © Sekolah Tinggi Teknik Surabaya
Syntax: Asign: varName.Add(Key, Val); Contoh: kamus.Add("one", 1) kamus.Add("twenty", 20); 13 © Sekolah Tinggi Teknik Surabaya
Syntax: Access: ValType temp = varName[Key]; Contoh: int x = kamus["one"]; foreach (String key in kamus.Keys) { Console.WriteLine(kamus[key]); } 14 © Sekolah Tinggi Teknik Surabaya
Contoh: foreach (KeyValuePair pair in kamus) { Console.WriteLine(pair.Key); Console.WriteLine(pair.Value); } 15 © Sekolah Tinggi Teknik Surabaya
Syntax: varName.Remove(key); varName.Clear(); Contoh: kamus.Remove("one"); kamus.Clear(); 16 © Sekolah Tinggi Teknik Surabaya
17 © Sekolah Tinggi Teknik Surabaya Daftar Method AddGetObjectData ClearGetType ContainsKeyMemberwiseClone ContainsValueOnDeserialization Equals(Object)Remove FinalizeToString GetEnumeratorTryGetValue GetHashCode
int temp = kamus.Sum(x => x.Value); Double y = kamus.Average(x => x.Value); 18 © Sekolah Tinggi Teknik Surabaya
Mengurutkan isi kamus berdasarkan Key secara Ascanding kamus = kamus.OrderBy(x=>x.Key).ToDictionary(x=>x.Key, x=>x.Value); Kamus = kamus.OrderByDescending(x=>x.Key).ToDictionary(x => x.Key, x => x.Value); 19 © Sekolah Tinggi Teknik Surabaya
Dictionary kamus1 = new Dictionary (); kamus1.Add("ani", 60); kamus1.Add("budi", 80); kamus1.Add("jeni", 90); kamus1.Add("jono",70); Dictionary kamus2 = new Dictionary (); kamus2.Add("amir", 60); kamus2.Add("adi", 80); kamus2.Add("jeni", 90); kamus2.Add("luna", 70); Dictionary kamus3 = new Dictionary (); 20 © Sekolah Tinggi Teknik Surabaya
kamus3 = kamus1.Keys.Intersect(kamus2.Keys).ToDictionary(t => t, t => kamus1[t]); Output: jeni, © Sekolah Tinggi Teknik Surabaya
kamus3 = kamus1.Where(x => kamus2.ContainsKey(x.Key)).ToDictionary(x => x.Key, x => x.Value); Output: jeni © Sekolah Tinggi Teknik Surabaya
kamus3 = kamus1.Union(kamus2).ToDictionary(x => x.Key, x => x.Value); Output: ani 60 budi 80 jeni 90 jono 70 amir 60 adi 80 luna © Sekolah Tinggi Teknik Surabaya
» us/library/xfhwa508(v=vs.110).aspx 24 © Sekolah Tinggi Teknik Surabaya