List<String> list = new ArrayList<>();
List<String> syncedList = Collections.synchronizedList(list);
Collections
Collections
java.util
nabízí třídu Collections
synchronizedSet, synchronizedList, synchronizedCollection, …
List<String> list = new ArrayList<>();
List<String> syncedList = Collections.synchronizedList(list);
unmodifiableSet, unmodifiableList, unmodifiableCollection, …
Set<String> set = Set.of("Donald Trump", "Barrack Obama", "Hillary Clinton");
return Collections.unmodifiableSet(set);
Getter na kolekci je vždy nemodifikovatelný! |
EMPTY_SET, EMPTY_LIST, EMPTY_MAP
emptyList(), emptyMap(), emptyIterator(), …
Collections.<String>emptyList();
Collections
I
Collections.binarySearch
Collections.reverseOrder, rotate
Collections.swap
Collections.shuffle
Collections
II
Collections.sort
Collections.min, max
Collections.nCopies
Collections.frequency
ArrayList
— na bázi pole
LinkedList
— na bázi lineárního zřetězeného seznamu
HashMap
, HashSet
— na bázi hašovacích tabulek
TreeMap
, TreeSet
— na bázi vyhledávacích stromů
LinkedHashSet
, LinkedHashMap
— spojení výhod obou
Set
(množina)
HashSet
(založena na hašovací tabulce)TreeSet
(černobílý strom)LinkedHashSet
(zřetězené záznamy v hašovací tabulce)
List
(seznam)
ArrayList
(implementován pomocí pole)LinkedList
(implementován pomocí zřetězeného seznamu)
Deque
(fronta - obousměrná)
ArrayDeque
(fronta pomocí pole)LinkedList
(fronta pomocí zřetězeného seznamu)
Map
(asociativní pole/mapa)
HashMap
(založena na hašovací tabulce)TreeMap
(černobílý strom)LinkedHashMap
(zřetězené záznamy v hašovací tabulce)Při práci s kontejnery může vzniknout řada výjimek.
Některé z nich i s příklady:
IllegalStateException
remove()
bez volání next()
v iterátoru
UnsupportedOperationException
ConcurrentModificationException
Většina výjimek je běhových (runtime), tudíž není nutné je řešit. (Samozřejmě je ale třeba psát kód tak, aby nevznikaly. :)) |
některé metody rozhraní jsou nepovinné — třídy jej nemusí implementovat
add
, clear
, remove
UnsupportedOperationException
Důvod?
unmodifiable
)/