2012-06-11 15 views
10

Powiel możliwe:
Differences between HashMap and Hashtable?Jaka jest główna korzyść z używania HashMap w java?

W tym projekcie Java patrzę, trzymam kod z HashMap widząc, tak jak

/** imageID --> image map */ 
    Map<String,ImageIcon> imgs = new HashMap<String,ImageIcon>(); 

Później w klasa:

// images 
loadImages(); 
actualImage = imgs.get(this.DEFAULT_IMAGE_ID); 
JLabel label = new JLabel(actualImage); 

Jaki jest cel tego kodu? Tutaj jestem mglista. Dzięki

+0

@JigarJoshi - Dzięki za ten link i dobry punkt. po mojej edycji; Myślę jednak, że moje pytanie jest teraz trochę inne. – Coffee

Odpowiedz

18

Obie zapewniają dostęp do danych klucz-wartość. Hashtable jest jedną z oryginalnych klas kolekcji w Javie. HashMap jest częścią nowej struktury kolekcji, dodanej w Javie 2, v1.2.

Główna różnica między nimi polega na tym, że dostęp do tabeli jest zsynchronizowany na stole, podczas gdy dostęp do mapy HashMap nie jest możliwy. Możesz go dodać, ale nie ma go domyślnie.

Kolejną różnicą jest to, że iterator w HashMap jest odporny na awarie, podczas gdy moduł wyliczający dla HashTable nie jest. Jeśli zmienisz mapę podczas iteracji, będziesz wiedział.

Trzecia różnica polega na tym, że HashMap dopuszcza wartości puste, podczas gdy HashTable nie.

odpowiedzi do edytowanej pytanie:

/** imageID --> image map */ 
//imageID - String. imgs is a map of imageID and ImageIcon. imageID is key. ImageIcon is value. 
    Map<String,ImageIcon> imgs = new HashMap<String,ImageIcon>(); 

Następnie w klasie później:

//SEE INLINE COMMENTS 
// images 
//No definition provided. May be putting values into the imgs map. 
loadImages(); 
//this.DEFAULT_IMAGE_ID is some imageID. imgs.get gets the value for that imageID, which 
//is ImageIcon for that imageID. That is stored in actualImage variable. 
actualImage = imgs.get(this.DEFAULT_IMAGE_ID); 
//Creating a new JLabel with actualImage. 
JLabel label = new JLabel(actualImage); 
+0

Dziękuję bardzo! – Coffee

+0

OK, ja wiiillll;) – Coffee

2

Główną zaletą korzystania HashMap w java? Prawdopodobnie prędkość. Ten kontener dzieli swoje dane na wiele "segmentów", które zawierają tylko elementy o tym samym haśle klucza. W ten sposób, gdy trzeba znaleźć parę klucz-wartość, nie będzie musiał iterować nad wszystkimi swoimi danymi, ale tylko nad elementami z tym samym hashcode w kluczu, jak hashcode wyszukiwanego klucza.

Powiązane problemy