2012-06-11 16 views
10

Olası Çoğalt: Benim baktığım bu Java projesinde Java'da HashMap kullanmanın temel faydası nedir?


Differences between HashMap and Hashtable?

, ben daha sonra Sonra bu yüzden

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

gibi HashMap ile kod görmeye devam Sınıfı:

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

Bu kodun amacı nedir? Burada bütün konsept üzerinde sisliyim. Teşekkürler

+0

@JigarJoshi - Bu bağlantı için teşekkürler, iyi nokta. düzenlememden sonra; Ama sanırım şu an sorumum şu an biraz farklı – Coffee

cevap

18

Her ikisi de veri için anahtar-değer erişimi sağlar. Hashtable, Java'daki orijinal koleksiyon sınıflarından biridir. HashMap, Java 2, v1.2 ile eklenen yeni Koleksiyonlar Çerçevesinin bir parçasıdır.

İki arasındaki temel fark, HashMap'a erişimin HashMap'e erişemediğinde tabloda senkronize edilmesidir. Ekleyebilir, ancak varsayılan olarak yoktur.

Başka bir fark, Hashtable'daki yineleyicinin Hashtable için değilken hata güvenlidir. Haritayı tekrarlarken değiştirirseniz, bileceksiniz.

Ayrıca, üçüncü bir fark, HashPap'in boş değerlere izin vermesidir, Hashtable içermez. Düzenlenen soruya

Cevap:

/** 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>(); 

Ardından daha sonra sınıfta: java HashMap kullanmanın

//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

Teşekkürler Çok Çok! – Coffee

+0

OK I wiiillll;) – Coffee

2

Ana yarar? Muhtemelen hız. Bu Kapsayıcı, verilerini yalnızca anahtarın aynı karma kodunu içeren öğeleri içeren "paketler" grubuna ayırır. Bu şekilde, bazı anahtar-değer çiftlerini bulması gerektiğinde, bu, tüm verileri üzerinde yineleme yapmak zorunda kalmaz, ancak sadece, aynı anahtarın içinde, anahtarın anahtar kodu olarak, arama anahtarının hash kodu olarak bulunur.

İlgili konular