Кадом намудҳои ҷамъоварӣ дар Java вуҷуд доранд?
sobes.tech AI
Ҷавоб аз AI
Дар Java асосӣ намудҳои коллексияҳо дар чаҳорчӯбаи J2SE Collections Framework муаррифӣ шудаанд ва ба се категорияи асосӣ тақсим мешаванд:
- Set:
- Коллексияҳои бе тартиб, ки такрорҳоро дар бар намегиранд.
- Иҷроҳо:
HashSet,LinkedHashSet,TreeSet.
- List:
- Коллексияҳои тартибдодашуда, ки унсурҳои онҳо ба воситаи индекс дастрас мешаванд. Мумкин аст такрорҳо дошта бошанд.
- Иҷроҳо:
ArrayList,LinkedList,Vector,Stack.
- Map:
- Ҷуфтҳои "калид-арзиш"-ро нигоҳ медорад. Калидҳо беназир мебошанд, арзишҳо — не. Унсурҳо бе тартиби муайян нигоҳ дошта мешаванд (ғайр аз
LinkedHashMapваTreeMap). - Иҷроҳо:
HashMap,LinkedHashMap,TreeMap,Hashtable.
- Ҷуфтҳои "калид-арзиш"-ро нигоҳ медорад. Калидҳо беназир мебошанд, арзишҳо — не. Унсурҳо бе тартиби муайян нигоҳ дошта мешаванд (ғайр аз
Илова ба ин интерфейсҳои асосӣ (Set, List, Map), инчунин намудҳои камтар паҳншуда мавҷуданд:
- Queue: Коллексия барои нигоҳ доштани унсурҳо пеш аз коркардашон. Одатан дар асоси FIFO (аввал омада — аввал рафта) кор мекунад.
- Иҷроҳо:
PriorityQueue,ArrayDeque,LinkedList.
- Иҷроҳо:
- Deque: Қуттии дутарафа, ки имкон медиҳад, ки унсурҳоро дар ҳар ду канор ворид ва хориҷ кардан мумкин аст.
- Иҷроҳо:
ArrayDeque,LinkedList.
- Иҷроҳо:
Классҳои абстрактии Collection асосӣ барои бештари ҳиерархияи коллексияҳо (Set, List, Queue) мебошанд. Map Collection-ро иҷро намекунад.
Маслиҳатҳо барои истифода:
// ArrayList
ArrayList<String> list = new ArrayList<>();
list.add("Apple");
list.add("Banana");
list.add("Apple"); // Такрорҳо иҷозат дода шудаанд
// HashSet
HashSet<String> set = new HashSet<>();
set.add("Apple");
set.add("Banana");
set.add("Apple"); // Ингнор карда мешавад, зеро такрорҳо иҷозат дода намешаванд
// HashMap
HashMap<String, Integer> map = new HashMap<>();
map.put("Apple", 1);
map.put("Banana", 2);
map.put("Orange", 1); // Арзишҳо метавонанд якхела бошанд
Интихоби реализацияи мушаххас вобаста ба хосиятҳои талабшуда: ниёз ба нигоҳ доштани тартиб, иҷозат додани такрорҳо, суръати дастрасӣ ва воридот, муҳити бисёрсоҳавӣ ва ғайра. Масалан, ArrayList барои дастрасии зуд ба индекс, LinkedList барои ворид ва хориҷ кардани зуд дар миёна, HashSet барои ҷустуҷӯи зудтари унсурҳои беназир, ва HashMap барои нигоҳ доштани маълумот бо калид.
Vector ва Hashtable реализацияҳои синхронизатсияшуда (бехатар барои бисёрсоҳавӣ) мебошанд, аммо одатан беҳтар аст, ки нусхаҳои номуайянро истифода баред (ArrayList, HashMap) ва синхронизатсияро дар сатҳи дигар таъмин кунед ё аз коллексияҳои пакети java.util.concurrent истифода баред. LinkedHashSet ва LinkedHashMap тартиби воридшударо нигоҳ медоранд. TreeSet ва TreeMap унсурҳоро дар тартиби сортишуда нигоҳ медоранд.
ArrayDeque одатан нисбат ба Stack ва LinkedList дар истифода ҳамчун стэк ё қуттӣ беҳтар аст бо сабаби иҷрои беҳтар.
PriorityQueue унсурҳоро мувофиқи тартиби табиии онҳо ё бо ёрии Comparator ташкил мекунад.