在Java中使用HashMap的主要好处是什么?

2022-09-04 07:50:17

在我正在看的这个Java项目中,我不断看到使用HashMap的代码,就像这样

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

然后在课堂上:

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

此代码的用途是什么?我对这里的整个概念感到困惑。


答案 1

两者都提供对数据的键值访问。Hashtable是Java中的原始集合类之一。HashMap是新的 Collections Framework的一部分,与Java 2 v1.2一起添加。

两者之间的主要区别在于,对 Hashtable 的访问在表上同步,而对 HashMap 的访问则不是。您可以添加它,但默认情况下它不存在。

另一个区别是,HashMap 中的迭代器是故障安全的,而 Hashtable 的枚举器不是。如果您在迭代时更改地图,您就会知道。

而且,第三个区别是HashMap允许其中的空值,而Hashtable则不允许。

回答您编辑过的问题:

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

然后在课堂上:

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

答案 2

在Java中使用HashMap的主要好处?可能是速度。此容器将其数据拆分为许多“存储桶”,这些“存储桶”仅包含具有相同密钥哈希码的元素。这样,当它需要找到一些键值对时,它就不必迭代所有数据,而只需迭代与搜索键的哈希码相同哈希码的元素。