Sobes.tech
Junior

Дар бораи коллексияи Map дар Java ва хусусиятҳои он нақл кунед.

sobes.tech AI

Ҷавоб аз AI

Map — интерфейси дар Java Collection Framework, ки маҷмӯаи ҷуфтҳои "калид-арзиш"-ро намояндагӣ мекунад. Калидҳо ягона мебошанд, вале арзишҳо метавонанд такрор шаванд.

Хусусиятҳои асосӣ:

  • Калид барои дастрасӣ ба арзиши мувофиқ истифода мешавад.
  • Як калид наметавонад ду маротиба илова шавад. Ҳангоми кӯшиши илова кардани калиди мавҷуда, арзиши кӯҳна бо нав иваз мешавад.
  • Map аз интерфейси Collection мерос нагирифтааст. Методи худро барои кор бо ҷуфтҳои "калид-арзиш" дорад.
  • Тартиби ҷуфтҳои "калид-арзиш" метавонад вобаста ба иҷрои мушаххас тағйир ёбад.

Иҷрои маъруфи Map:

  • HashMap: Тартиби элементҳоро кафолат намекунад. Барои аксар амалҳо (вуруди, гирифтани, тоза кардани) бо кам конфликтҳои хеши баланд иҷроиш медиҳад.
  • LinkedHashMap: Элементҳоро дар тартиби илова кардан нигоҳ медорад (ё дар тартиби дастрасӣ, агар мувофиқи он танзим карда шавад).
  • TreeMap: Элементҳоро дар тартиби сортишудаи асоси калид нигоҳ медорад (тартиби табиӣ ё бо истифода аз муқоисакунанда). Вақти логарифмиро барои аксар амалҳо таъмин мекунад.

Маслиҳатҳо барои методҳо:

// Гирифтани арзиш бо калид
Object value = map.get(key);

// Илова ё навсозии ҷуфт калид-арзиш
Object oldValue = map.put(key, value);

// Тоза кардани ҷуфт бо калид
Object removedValue = map.remove(key);

// Санҷидани мавҷудияти калид
boolean containsKey = map.containsKey(key);

// Санҷидани мавҷудияти арзиш
boolean containsValue = map.containsValue(value);

// Гирифтани маҷмӯаи ҳамаи калидҳо
Set<KeyType> keys = map.keySet();

// Гирифтани маҷмӯаи ҳамаи арзишҳо
Collection<ValueType> values = map.values();

// Гирифтани маҷмӯаи ҳамаи воридот (ҷуфтҳои калид-арзиш)
Set<Map.Entry<KeyType, ValueType>> entries = map.entrySet();

// Гирифтани андозаи Map
int size = map.size();

Истифодаи Map.Entry дар вақти итеррасия:

// Итеррасия дар Entry set
for (Map.Entry<KeyType, ValueType> entry : map.entrySet()) {
    KeyType key = entry.getKey();
    ValueType value = entry.getValue();
    // ...
}