Kolekcie a mapy (Java)

Z bur.sk
Skočit na navigaci Skočit na vyhledávání


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.


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).