Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

PGO Kolekcje Michail Mokkas.

Podobne prezentacje


Prezentacja na temat: "PGO Kolekcje Michail Mokkas."— Zapis prezentacji:

1 PGO Kolekcje Michail Mokkas

2 Spis treści Generic Tablica Collection Kontenery TreeSet ArrayList
PriorityQueue HashMap Działania na kolekcjach Zadania

3 Generic Mechanizm w Javie, pozwalający metodom na działanie na różnych typach danych/obiektów. Notacja Generics: parametry typu T - wskazuje na typ E - wskazuje na element (np. List<E>) K - wkazuje na klucz V - wskazuje na wartość (np. Map<K,V>) wildcard ? - użycie jakiegokolwiek typu stosowane, kiedy nie wiemy z jakim typem mamy do czynienia

4 Tablica (Array) Kontener, który przechowywuje statycznie zadeklarowaną ilość wartości jednego typu. Tablica otrzymuje swój rozmiar przy deklaracji. Rozmiar nie może być zmieniony po jej utworzeniu. Indeks tablicy wskazuje na pozycję w kolejności elementów przetrzymywanych przez nią. Zaczyna się od 0.

5 Tablica kont. 1 Alternatywny sposób deklaracji:
Wielowymiarowa tablica: Alternatywny sposób deklaracji wielowymiarowej tablicy:

6 Collection Najwyższy w hierarchii interfejs, po którym dziedziczą (rozszerzają lub implementują) inne klasy związane z przetrzymywaniem danych jak m.in.: Set (zbiór) SortedSet (zbiór uporządkowany) List (lista) ArrayList (lista na podstawie tablicy dynamicznej) LinkedList (lista na podstawie łączeń pomiędzy elementami) Vector (to samo co ArrayList + thread-safe) Queue (kolejka)

7 Collection Dysponuje metodami:
boolean Add(E e) - dodaje element do kolekcji. boolean addAll(Collection<? extends E> c) - dodaje kolekcje do kolekcji. void clear() - usuwa wszystkie elementy. boolean contains(Object o) - sprawdza czy dany obiekt istnieje już w kolekcji. boolean equals(Object o) - porównuje dwie kolekcje. boolean isEmpty() - sprawdza czy kolekcja jest pusta. boolean remove(Object o) - usuwa jeden z obiektów podanych jako parametr. boolean removeAll(Collection<?> c) - usuwa obiekty znajdujące się w kolekcji c z naszej kolekcji. int size() - zwraca ilość elementów. Object[] toArray() - zwraca tablice elementów kolekcji. <T> T[] toArray(T[] a) - to samo co wyżej + ustalamy typ tablicy.

8 Kontenery źródło:

9 TreeSet Implementacja interfejsu Set na podstawie TreeMap.
Gwarantuje koszt czasowy log(n) dla operacji (add, remove i contains). Gwaratuje, że elementy zbioru będą uporządkowane (pod warunkiem, że implementują interfejs Comparable jak np. Integer i String) Nie dopuszcza duplikatów elementów. Nie jest thread-safe. Przykład: Rezultat w konsoli: [1, 2, 3, 4, 5]

10 ArrayList Implementuje interfejs List.
W praktyce ArrayList stosuje się, jako alternatywa do zwykłych tablic, które są statyczne. Elementy ArrayList są indeksowane. Rozmiar ArrayList jest możliwy do zmiany po jej deklaracji. Przykład: Rezultat w konsoli: [A, B, D, C] A

11 PriorityQueue Kolejka priorytetowa na bazie stosu.
Element z wyższym priorytetem obsługiwany jest wcześniej niż z niższym, a jeżeli mają taki sam to według swojej kolejności w kolejce. Nie dopuszcza elementów o wartości null. Dysponuje dodatkowo metodami: boolean offer(E e) - dodaje element do kolejki. E peek() - wyszukuje i nie usuwa głowy (element kolejny) kolejki. E poll() - wyszukuje i usuwa głowę (element kolejny) kolejki. Przykład: Rezultat w konsoli:

12 HashMap Implementacja tablicy mieszającej, bazująca na tablicy asocjacyjnej (mapy). Przechowuje pary (unikatowy klucz, wartość). Dostęp do jej elementów jest możliwy poprzez podanie klucza. Dopuszcza klucze i wartości null. Dodatkowo wykorzystuje metody: boolean containsKey(Object key) - sprawdza czy zawiera wartość przypisaną do klucza k boolean containsValue(object value) - sprawdza czy zawiera klucz do podanej wartości v V get(Object key) - zwraca wartość przypisaną do klucza k V put(K key, V value) - dodaje parę klucz-wartość do mapy

13 HashMap kont. 1 Przykład: Rezultat w konsoli: {1=C, 2=A, 3=B}
{1=C, 2=A, 3=D, 4=A}

14 Działania na kolekcjach
Synchronizacja kolekcji (thread-safe): Collections.synchronizedList() Collections.synchronizedMap() Collections.synchronizedSet() Collections.synchronizedCollection() Przykład: Pętla for each:

15 Zadanie 1 Stwórz tablicę przetrzymującą zdefiniowane już daty urodzin (skorzystaj z klasy Calendar lub GregorianCalendar). Następnie za pomocą pętli for each przerób tablicę na ArrayList tak, aby było możliwe dodawanie kolejnych dat urodzin do stworzonej już listy.

16 Zadanie 2 Zaprojektuj klasy reprezentujące numer seryjny (SerialNumber) oraz urządzenie (Device). Klasa SerialNumber powinna dysponować zmienną numer a klasa Device zmienną nazwa. Na podstawie tych klas stwórz HashMap przetrzymujący pary (SerialNumber, Device).

17 Zadanie 3 Stwórz kontener przetrzymujący obiekty różnego typu (co najmniej dwa). Dorób metody poprawnie klasyfikujące zwracane/otrzymywane obiekty z kontenera. skorzystaj ze stałej class klas obiektów oraz metody getClass() np. obj.getClass().equals(Integer.class) - zwraca true, jeżeli obj jest typu Integer

18 Zadanie 4 Stwórz klasę MyArrayList rozszerzającą klasę ArrayList.
Obiekty klasy MyArrayList powinny wyświetlać w konsoli zawartość listy w następujący sposób (System.out.ptintln(mal)) : To jest lista o ID: 1234 w skład której wchodzą następujące elementy: A B C Lista posiada 3 elementy.


Pobierz ppt "PGO Kolekcje Michail Mokkas."

Podobne prezentacje


Reklamy Google