Collections Flashcards
Collection vs Collections
Collection jest podstawowym interfejsem dla różnych struktur danych w Javie, takich jak listy, zestawy czy kolejki.
Collections to klasa narzędziowa, która dostarcza szereg przydatnych metod statycznych do pracy z obiektami kolekcji.
Hierarchia kolekcji
Jakie są główne zalety korzystania z kolekcji w Javie?
Spójne API: API posiada podstawowy zestaw interfejsów takich jak Collection, Set, List czy Map. Wszystkie klasy (takie jak ArrayList, LinkedList, Vector itp.), które implementują te interfejsy, mają pewien wspólny zestaw metod.
Oszczędność wysiłku programistycznego: Zamiast martwić się o projekt kolekcji, programista może skupić się na tym, jak najlepiej jej użyć w swoim programie. Dzięki temu skutecznie zastosowano podstawową zasadę programowania obiektowego, czyli abstrakcję.
Poprawa prędkości i jakości programu: oferuje wydajne implementacje przydatnych struktur danych i algorytmów. Programista nie musi martwić się o optymalną implementację konkretnej struktury danych. Mogą po prostu korzystać z najlepszej implementacji, aby znacząco poprawić wydajność swojego programu.
Czym jest interfejs Iterable w Javie?
-
Interfejs: Iterable jest podstawowym interfejsem w Javie umożliwiającym iterację po elementach kolekcji.
2.Główna metoda: Posiada metodę iterator(), która zwraca obiekt Iterator służący do przechodzenia przez elementy. - Dla każdej pętli: Dzięki implementacji interfejsu Iterable, klasy mogą być używane w rozszerzonej pętli for-each.
ArrayList vs Vector
ListIterator vs Interator
TreeSet vs HashSet
Comparable vs Comparator
-comparable - implmentujemy interfejs w klasie i tworzymy naturalny porządek na podstawie porównania pól
- comparator - możemy tworzyć różne klasy porównujące w rózny sposób a póżniej używać ich do sortowania
HashMap vs HashTable
Czy HashMap może mieć null jako klucz
- mogą ale nie jest to rekomendowane
- hashcode dla null zwróci 0 więc wszystkie wartości z kluczem null bedą w tym samym bukecie
ConcurrentHashMap
- wątkowo bezpieczna mapa
- pozwala na bezpieczny dostęp i modfyikacje mapy przez wiele wątków jednocześnie
Fail-safe vs Fail-fast iteratory
Fail-Fast Iteratory:
- natychmiast zgłaszają ConcurrentModificationException, gdy podczas iteracji wykryją, że struktura kolekcji została zmodyfikowana
- ArrayList HashMap
Fail-Safe Iteratory:
- nie rzucają ConcurrentModificationException nawet jeśli jest modyfikowana podczas iteracji
- ConcurrentHashMap