Kolekcie a mapy (Java)
Collection<E> je skupina objektov typu E. Zvyčajne používame niektorú z podtried:
- Set<E> je množina objektov. Nie je definované poradie prvkov, a jeden objekt sa v danej množine môže nachádzať nanajvýš jedenkrát.
- List<E> je zoznam objektov. Predmety sú v zozname v danom poradí, očíslované od nuly.
- Queue<E> je fronta objektov. Objekty z nej môžeme vyberať v danom poradí (zvyčajne v poradí, v akom sme ich vložili).
Map<K, V> je mapa objektov. (Nazýva sa aj "slovník" alebo "asociatívne pole".) K jednému kľúču typu K môže byť priradená jedna hodnota typu V.
Obsah
Collection
Set
Trieda | Dovoľuje null | Thread-safe | Ďalšie rozhrania |
---|---|---|---|
EnumSet | nie | nie | |
HashSet | áno | nie | |
LinkedHashSet | áno | nie | |
TreeSet | nie | SortedSet, NavigableSet | |
ConcurrentSkipListSet | nie | áno | SortedSet, NavigableSet |
CopyOnWriteArraySet | áno | áno |
Všetky uvedené množiny implementujú aj rozhrania Set<E>, Collection<E>, Iterable<E> a Serializable. Všetky okrem CopyOnWriteArraySet implementujú aj Cloneable.
List
Trieda | Dovoľuje null | Thread-safe | Ďalšie rozhrania |
---|---|---|---|
ArrayList | áno | nie | RandomAccess |
LinkedList | áno | nie | Queue, Deque |
CopyOnWriteArrayList | áno | áno | RandomAccess |
Všetky uvedené zoznamy implementujú aj rozhrania List<E>, Collection<E>, Iterable<E>, Serializable a Cloneable.
Zastarané triedy Vector<E> a Stack<E> tiež implementujú rozhranie List<E>, a správajú sa ako thread-safe verzia triedy ArrayList<E>. Namiesto Vector<E> použite ArrayList<E> (prípadne obalené v "Collections.synchronizedList"). Namiesto Stack<E> použite niektorú implementáciu Deque<E>, napríklad ArrayDeque<E>.
Queue
Trieda | Veľkosť | Thread-safe | Ďalšie rozhrania |
---|---|---|---|
ArrayBlockingQueue | pevná | áno | BlockingQueue |
ArrayDeque | nie | Deque | |
ConcurrentLinkedDeque | áno | Deque | |
ConcurrentLinkedQueue | áno | ||
DelayQueue | neobmedzená | áno | BlockingQueue |
LinkedBlockingDeque | pevná / neobmedzená | áno | BlockingQueue, Deque, BlockingDeque |
LinkedBlockingQueue | pevná / neobmedzená | áno | BlockingQueue |
LinkedList | nie | Deque | |
LinkedTransferQueue | áno | BlockingQueue, TransferQueue | |
PriorityBlockingQueue | áno | BlockingQueue | |
PriorityQueue | nie | ||
SynchronousQueue | nula | áno | BlockingQueue |
Všetky uvedené fronty implementujú aj rozhrania Queue<E>, Collection<E> a Iterable<E>. Všetky okrem DelayQueue implementujú aj Serializable.
Map
Trieda | Dovoľuje null | Thread-safe | Ďalšie rozhrania |
---|---|---|---|
EnumMap | iba V | nie | |
HashMap | nie | ||
LinkedHashMap | nie | ||
IdentityHashMap | áno | nie | |
WeakHashMap | áno | nie | |
ConcurrentHashMap | áno | ConcurrentMap | |
ConcurrentSkipListMap | áno | SortedMap, NavigableMap, ConcurrentMap, ConcurrentNavigableMap | |
TreeMap | nie | SortedMap, NavigableMap |
Všetky uvedené mapy implementujú aj rozhranie Map<E>. Väčšina z nich implementuje aj Serializable (okrem WeakHashMap) a Cloneable (okrem WeakHashMap a ConcurrentHashMap).