14

私が見ているこの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);

このコードの目的は何ですか?私はここで全体の概念に霧がかかっています。

4

2 に答える 2

20

どちらも、データへのKey-Valueアクセスを提供します。Hashtableは、Javaの元のコレクションクラスの1つです。HashMapは、Java 2、v1.2で追加された新しいCollectionsFrameworkの一部です。

2つの主な違いは、HashMapへのアクセスが同期されていないのに対し、Hashtableへのアクセスはテーブル上で同期されていることです。追加することはできますが、デフォルトではありません。

もう1つの違いは、HashMapのイテレーターはフェイルセーフですが、Hashtableの列挙子はフェイルセーフではないことです。反復中にマップを変更すると、わかります。

そして、3番目の違いは、HashMapはnull値を許可しますが、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);
于 2012-06-11T00:48:26.790 に答える
6

JavaでHashMapを使用する主な利点は? おそらくスピード。このコンテナは、キーのハッシュコードが同じ要素のみを含む多くの「バケット」にデータを分割します。そうすれば、キーと値のペアを見つける必要がある場合、すべてのデータを反復する必要はありませんが、検索されたキーのハッシュコードと同じハッシュコードを持つ要素のみを反復する必要があります。

于 2012-06-11T01:20:31.823 に答える