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"); // ჭეშმარიტი