Sobes.tech
Junior

պատմեք Java-ում հավաքածուների հիերարխիայի մասին։

sobes.tech AI

Պատասխան AI-ից

Java- ի հավաքածուների հիերարխիան կառուցված է երկու հիմնական ինտերֆեյսների շուրջ՝ Collection և Map: Այն սահմանված է java.util փաթեթում:

  • Collection<E>: Հիմնական ինտերֆեյսը մեծ մասի հավաքածուների համար: Ներկայացնում է տարրերի խմբեր: Գոյություն չունի երաշխիք՝ կարգ կամ եզակիություն:
    • List<E>: Կարգավորված հավաքածու (շարահյուսություն): Տարրերը ունեն որոշակի ինդեքս: Կարող են կրկնվել:
      • ArrayList<E>: Մասիվի հիման վրա իրականացում: Արագ պատահական մուտք, դանդաղ տեղադրում/ջնջում միջինում:
      • LinkedList<E>: Կապակցված ցանկի հիման վրա իրականացում: Դանդաղ պատահական մուտք, արագ տեղադրում/ջնջում սկզբից կամ վերջից:
      • Vector<E>: Հնացած սինխրոնիզացված դաս: Դիպուկ նման ArrayList, բայց ավելի անվտանգ՝ բազմաֆունկցիոնալ:
      • Stack<E>: Հնացած դաս, որը ընդլայնում է Vector-ը և իրականացնում է ստեքի վարքագիծ (LIFO):
    • Set<E>: Միայն եզակի տարրեր պարունակող հավաքածու:
      • HashSet<E>: Հեշ-թաբլե հիման վրա իրականացում: Անկարգավորված: Արագ add, remove, contains գործողություններ:
      • LinkedHashSet<E>: Պահպանում է տեղադրման կարգը:
      • SortedSet<E>: Սորտավորված հավաքածու՝ աճման կարգով:
        • TreeSet<E>: Կարմրուկ-սև ծառի հիման վրա իրականացում: Գերաշխավորում է սորտավորված կարգը:
    • Queue<E>: Հավաքածու՝ տարրեր պահելու համար՝ նախապես մշակելու համար, հաճախ FIFO կարգով:
      • PriorityQueue<E>: Առաջնահերթությունների հերթականություն: Տարրերը հանվում են ըստ իրենց առաջնահերթության:
      • Deque<E>: (Երկկողմանի հերթ) Պահպանում է տարրեր երկու կողմերից ավելացնելու և հանելու հնարավորությունը:
        • ArrayDeque<E>: Դինամիկ զանգվածի հիման վրա իրականացում: Արագ է՝ ավելի քան LinkedList՝ որպես ստեք կամ հերթ:
  • Map<K, V>: Օբյեկտ՝ կարտեզում կցում է բանալիները արժեքներին: Բանալիները եզակի են, արժեքները կարող են կրկնվել:
    • HashMap<K, V>: Հեշ-թաբլե հիման վրա իրականացում: Անկարգավորված: Արագ put, get, remove գործողություններ:
    • LinkedHashMap<K, V>: Պահպանում է տեղադրման կամ մուտքի կարգը:
    • SortedMap<K, V>: Սորտավորված ըստ բանալիների:
      • TreeMap<K, V>: Կարմրուկ-սև ծառի հիման վրա իրականացում: Գերաշխավորում է սորտավորված կարգը:
    • Hashtable<K, V>: Հնացած սինխրոնիզացված դաս: Դիպուկ նման HashMap, բայց ավելի անվտանգ՝ բազմաֆունկցիոնալ:

Հիմնական ինտերֆեյսներ:

Ինտերֆեյս Նկարագրություն Կարգը Եզակիություն Կրկնվող արժեքներ
Collection Տարրերի խումբ +/- +/- Այո
List Կարգավորված հավաքածու Այո Ոչ Այո
Set Եզակի տարրերի հավաքածու +/- Այո Ոչ
Queue Հավաքածու՝ մշակման համար (FIFO) Այո Ոչ Այո
Deque Երկկողմանի հերթ Այո Ոչ Այո
Map Կլյուտ-արժեք +/- Կլյուտով Այո
SortedSet Սորտավորված հավաքածու Այո Այո Ոչ
SortedMap Սորտավորված քարտեզ՝ ըստ բանալիների Այո Կլյուտով Այո

Օգտագործման օրինակ:

// ArrayList օգտագործման օրինակ
List<String> names = new ArrayList<>();
names.add("Alice");
names.add("Bob");
System.out.println(names.get(0)); // Alice

// HashSet օգտագործման օրինակ
Set<Integer> uniqueNumbers = new HashSet<>();
uniqueNumbers.add(1);
uniqueNumbers.add(2);
uniqueNumbers.add(1); // Կրկնօրինակը անտեսվում է
System.out.println(uniqueNumbers.size()); // 2

// HashMap օգտագործման օրինակ
Map<String, Integer> ages = new HashMap<>();
ages.put("Alice", 30);
ages.put("Bob", 25);
System.out.println(ages.get("Alice")); // 30