C# Dictionary

Posted: January 26, 2009 in C#, Programming
Tags: , ,

Ini bukan pembahasan kamus lo, Dictionary pada C# merupakan salah satu bentuk dari hash table.

Apa itu hash table ?

hash table adalam struktur data semacam array, tiap elemen memiliki value dan sebuah key. Key disini seperti indeks pada Array. Kompleksitas pencarian sebuah data pada hash table nyaris mencapai O(1).

Lengkapnya untuk penjelasan hash table baca disini.

Berikut ini contoh implementasi dari Dictionary. Disini saya contohkan valuenya adalah string dan key-nya adalah integer. tpe dari value dan key sendiri bebas… gak harus string dan integer.

kita buat class yang mengimplementasikan Dictionary

class DictionaryProgram
{
        Dictionary<string, int> d;  // ini objek dictionarynya
        int n;  // buat counter key

        public DictionaryProgram()
        {
            d = new Dictionary<string, int>();  // kita inisiasi dulu
            n = 0;

            // masukkan beberapa data dulu
            AddData("monyet");
            AddData("kambing");
            AddData("kucing");
            AddData("kodok");
            AddData("ayam");
        }
}

Nah, kita buat fungsi untuk menambahkan data

 public void AddData(string data)
 {
     d.Add(data, n);
     n++; // setiap data bertambah, counter juga bertambah
 }

Fungsi untuk mencari data

public string FindData(string toFind)
{
    if (d.ContainsKey(toFind))
    {
        int value = d[toFind];
        return "kata " + toFind + "ditemukan dengan indeks " + value;
    }

    return "kata " + toFind + "tidak ditemukan";
}

Fungsi untuk mengecek apakah sebuah data terdapat dalam Dictionary apa enggak

public bool isContain(string toFind)
{
    if (d.ContainsKey(toFind))
        return true;

    return false;
}

Fungsi untuk mencetak semua data dalam Dictionary (cara 1)

public void PrintAll()
{
    foreach (KeyValuePair<string, int> pair in d)
    {
        Console.WriteLine("{0}, {1}",pair.Key, pair.Value);
    }

}

Fungsi untuk mencetak semua data dalam Dictionary (cara 2)

public void PrintAll()
{
    foreach (var pair in d)
    {
        Console.WriteLine("{0}, {1}", pair.Key, pair.Value);
    }
}

Fungsi konversi Dictionary ke List

public List<string> StoreToList()
{
    List<string> list = new List<string>(d.Keys);

    return list;
}

Fungsi menghapus sebuah data

public void Remove(string data)
{
    d.Remove(data);
}

Fungsi untuk menghapus semua data dalam dictionary

public void RemoveAll()
{
    d.Clear();
}
Comments
  1. frianrio says:

    mas dictionary yang pake java ada nggak???
    soalnya yang pake c# kok malah bingung,maksudnya
    foreach (KeyValuePair pair in d) itu apa???

    • azer89 says:

      foreach (KeyValuePair pair in d) itu adalah iterator, sama aja kayak for biasa cuman gak pake indeks

      klo contohnya pake java :

      import java.util.Collection;
      import java.util.Enumeration;
      import java.util.Hashtable;
      import java.util.Iterator;
      
      public class Main {
        public static void main(String[] args) {
          Hashtable<String, String> ht = new Hashtable<String,String>();
          ht.put("1", "One");
          ht.put("2", "Two");
          ht.put("3", "Three");
      
          Collection c = ht.values();
          Iterator itr = c.iterator();
          while (itr.hasNext()){
            System.out.println(itr.next());
          }
          c.remove("One");
      
          Enumeration e = ht.elements();
      
          while (e.hasMoreElements()){
            System.out.println(e.nextElement());
          }
        }
      }
      

      taken from :
      http://www.java2s.com/Code/Java/Collections-Data-Structure/GetCollectionofValuesfromJavaHashtable.htm

  2. frianrio says:

    makasih mas atas infonya
    terus kalu table itu kayak apa???
    ktanya bu ani kok kayak dictionary???

  3. caesar says:

    msa,
    saya mo bertanya,
    saya sedang mendebug program..
    dan terdapat error “Key not found Parameter name: key”
    kira2 permsalahannya terdapat di bagian mana ya?

    dan apakah dictionary itu bisa diedit?

    makasih sebelumnya..

  4. azer89 says:

    klo gak salah error tsb muncul ketika kita mau mengakses object dalam collection yang tidak ada
    klo data dalam dictionary tentunya bisa diedit

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s