В чем основное преимущество использования HashMap в java?

Возможный дубликат:
Различия между HashMap и Hashtable?

В этом проекте 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 является частью новой структуры коллекций, добавленной с 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

Главное преимущество использования HashMap в java? Вероятно, скорость. Этот контейнер разбивает свои данные на множество "ведер", которые содержат только элементы с одним и тем же хэш-кодом ключа. Таким образом, когда ему нужно найти пару ключевых значений, ему не нужно перебирать все свои данные, но только над элементами с одним и тем же хэш-кодом в качестве хэш-кода найденного ключа.