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"); // ճշմարիտ