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();
    // ...
}