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