Sobes.tech
Middle

აღწერეთ Java-ში კოლექციების ჰიერქია.

sobes.tech AI

პასუხი AI-სგან

Java-ში კოლექციების ჰიერარქია დაფუძნებულია ინტერფეისების ნაკრებაზე, რომლებიც უზრუნველყოფენ სტანდარტულ გზებს ობიექტების ჯგუფების წარმოდგენისთვის.

ძირითადი ინტერფეისები:

  • Collection: ჰიერარქიის ძირითადი ინტერფეისი. განსაზღვრავს ძირითად ოპერაციებს, რომლებიც ვრცელდება ყველა კოლექციაზე: დამატება, წაშლა, ელემენტების არსებობის შემოწმება, ზომის განსაზღვრა.
  • Set: კოლექცია, რომელიც არ შეიცავს დუბლიკატებს და არ აქვს განსაზღვრული წესრიგი ელემენტებისთვის.
  • List: წესრიგით განლაგებული კოლექცია, რომლის საშუალებითაც შესაძლებელია ელემენტებზე წვდომა ინდექსით. შეიძლება შეიცავდეს დუბლიკატებს.
  • Queue: კოლექცია, განკუთვნილი ელემენტების შენახვისთვის წინასწარ დამუშავებამდე. ჩვეულებრივ იცავს FIFO (პირველი შევიდა, პირველი გამოვიდა) წესს, მაგრამ არსებობს სხვა რეალიზაციებიც.
  • Deque: ორმხრივი რიგი. მხარს უჭერს ელემენტების დამატებას და წაშლას ორივე მხარეს.
  • Map: კოლექცია, რომელიც ინახავს "საკლიდი-მნიშვნელობა" წყვილებს. საკლიდები უნდა იყოს უნიკალური. არ განავრცობს Collection ინტერფეისს.

ძირითადი რეალიზაციის კლასები (მაგალითები):

ინტერფეისი რეალიზაციის კლასები (მაგალითები) აღწერა
Set HashSet, LinkedHashSet, TreeSet დუბლიკატების გარეშე. HashSet - არ აქვს წესრიგი, LinkedHashSet - ინახავს დამატების წესრიგს, TreeSet - სორტირებულია.
List ArrayList, LinkedList, Vector წესრიგით. ArrayList - ბაზირებული მასივზე, LinkedList - ბაზირებული დაკავშირებულ სიაზე, Vector - სინქრონიზებული (ძველი).
Queue LinkedList, PriorityQueue დამუშავებისთვის. LinkedList - FIFO, PriorityQueue - პრიორიტეტების მიხედვით.
Deque ArrayDeque, LinkedList ორმხრივი რიგი. ArrayDeque - ბაზირებული მასივზე, LinkedList - ბაზირებული დაკავშირებულ სიაზე.
Map HashMap, LinkedHashMap, TreeMap, Hashtable საკლიდი-მნიშვნელობა. HashMap - გარანტირებული წესრიგი არ აქვს, LinkedHashMap - ინახავს დამატებისა/მოწვდომის წესრიგს, TreeMap - სორტირებულია საკლიდების მიხედვით, Hashtable - სინქრონიზებული (ძველი).

მაგალითი ArrayList-ის გამოყენების:

// სტრინგების ArrayList-ის შექმნა
List<String> fruits = new ArrayList<>();
// ელემენტების დამატება
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Orange");
// წვდომა ინდექსით
String firstFruit = fruits.get(0); // Apple
// კოლექციის ზომა
int size = fruits.size(); // 3

მაგალითი HashSet-ის გამოყენების:

// მთელ რიცხვებზე HashSet-ის შექმნა
Set<Integer> numbers = new HashSet<>();
// ელემენტების დამატება (დუბლიკატები იგნორირებულია)
numbers.add(1);
numbers.add(2);
numbers.add(2); // იგნორირებულია
// კოლექციის ზომა
int size = numbers.size(); // 2

მაგალითი HashMap-ის გამოყენების:

// HashMap-ის შექმნა: საკლიდი - String, მნიშვნელობა - Integer
Map<String, Integer> ages = new HashMap<>();
// წყვილების დამატება
ages.put("Alice", 30);
ages.put("Bob", 25);
// მნიშვნელობის მიღება საკლიდის მიხედვით
int aliceAge = ages.get("Alice"); // 30
// საკლიდის არსებობის შემოწმება
boolean hasBob = ages.containsKey("Bob"); // ჭეშმარიტი