どちらも、データへの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);