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

в этом 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);

какова цель этого кода? У меня туман в голове.

2 ответов


оба обеспечивают доступ ключ-значения к данным. Hashtable является одним из исходных классов коллекции в Java. HashMap является частью новой структуры коллекций, добавленной С Java 2, v1.2.

ключевое различие между ними заключается в том, что доступ к хэш-таблице синхронизируется в таблице, а доступ к хэш-карте-нет. Вы можете добавить его, но по умолчанию его нет.

другое отличие заключается в том, что итератор в 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);

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