11 Ekim 2012 Perşembe

EnumMap nedir? EnumMap Kullanımı

EnumMap JDK 5 sürümüyle gelen bir özellik. Diger Map'ler gibi işlemekte fakat key olarak enum değer almaktadır.
.equals() ve .hashCode() metodlarını override edebiliyorsunuz.

Enummap'in önemli noktaları :
1) kullanılan bütün keyler aynı enum tipinde olmalı
2) Null bir enum key ekleyemezsin, buna izin vermez ve NullPointerException fırlatır.  fakat null value ekleyebilirsin.
3) EnumMap synchronized değildir. manuel olarak synchronized edilmesi gerekmektedir, istenildiği takdirde.
4) Eğer datanız enum tipinde ise EnumMap kullanmanız performans açısından HashMap kullanmaktan daha iyi sonuç verecekir.

Java'da EnumMap nasıl kullanılır


import java.util.EnumMap;
import java.util.Iterator;

/**
 * Java program to demonstrate How to use EnumMap in Java
 * If Key Object is Enum than it’s best to EnumMap to get better performance.
 * Most of IDE like Netbeans and Eclipse suggest you to use EnumMap instead of HashMap
 * or any other Map implementation when key object is Enum.
 *
 * @author Javarevisited
 */

public class EnumMapExample{

    public enum STATE{
        NEW, RUNNING, WAITING, FINISHED;
    }

    public static void main(String args[]) {
    
        // Java EnumMap Ornek 1: STATE enum tipinde, key'le enumMap yaratma
        EnumMap stateMap = new EnumMap(STATE.class);
    
        // Java EnumMap Örnek 2:
        //EnumMap'in içine degerleri yerleştirme
        //Girilen sıralamadan farklı olarak enum key'leri ekliyoruz. Sıralama "  NEW, RUNNING, WAITING, FINISHED"
    // yukarıda girilen sıranın bir önemi yok
        stateMap.put(STATE.RUNNING, "Program is running");
        stateMap.put(STATE.WAITING, "Program is waiting");
        stateMap.put(STATE.NEW, "Program has just created");
        stateMap.put(STATE.FINISHED, "Program has finished");
    
        // Java EnumMap Örnek 3:
        //EnumMap'in boyutunu yazdırma
        System.out.println("EnumMap'in boyutu: " + stateMap.size());
    
        // Java EnumMap Örnek 4:
        //İlk tanımlanan sıralamayla gelecek şekilde enum değerleri yazdırmak
        System.out.println("EnumMap: " + stateMap);
    
        // Java EnumMap Örnek 5:
        //Map'ten değer (value) almak
        System.out.println("EnumMap key : " + STATE.NEW +" value: " + stateMap.get(STATE.NEW));
    
        // Java EnumMap Örnek 6:
        //Iteratokullanma
        Iterator enumKeySet = stateMap.keySet().iterator();
        while(enumKeySet.hasNext()){
            STATE currentState = enumKeySet.next();
            System.out.println("key : " + currentState + " value : " + stateMap.get(currentState));
        }
    
        //Java EnumMap Örnek 7:
    //EnumMap'in verilen anahyatı içerip içermediği kontrol ediliyor
        System.out.println("State bu key'e sahip mi :" + STATE.NEW + " : "
                            +  stateMap.containsKey(STATE.NEW));
    
        //Java EnumMap Example 8: Verilen değer'e (value) sahip mi?
        System.out.println("Değer var mı :" + STATE.NEW + " : " + stateMap.containsValue(null));

    }

}


Çıktı:
Örnek 3 : 
EnumMap'in boyutu: 4

Örnek 4 : 
EnumMap: {NEW=Program has just created, RUNNING=Program is running, WAITING=Program is waiting, FINISHED=Program has finished}

Örnek 5 : 
EnumMap key : NEW value: Program has just created

Örnek 6 : 
key : NEW value : Program has just created
key : RUNNING value : Program is running
key : WAITING value : Program is waiting
key : FINISHED value : Program has finished

Örnek 7 :
State bu key'e sahip mi  :NEW : true

Örnek 8 :
Değer var mı :NEW : false

------
kaynak : http://javarevisited.blogspot.sg

Hiç yorum yok:

Yorum Gönder