Sobes.tech
Junior

Պատմեք Java-ի Map հավաքածուի մասին և նրա առանձնահատկությունների մասին։

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();

// Ստանալ բոլոր Entries (բանալի-արժեք զույգեր)
Set<Map.Entry<KeyType, ValueType>> entries = map.entrySet();

// Ստանալ Map-ի չափը
int size = map.size();

Օգտագործում Map.Entry՝ իտերացիայի ժամանակ՝

// Իտերացիա Entry հավաքածուի վրա
for (Map.Entry<KeyType, ValueType> entry : map.entrySet()) {
    KeyType key = entry.getKey();
    ValueType value = entry.getValue();
    // ...
}