Wprowadzenie do języka Java Kolekcje w języku Java Bartosz Walter.

Slides:



Advertisements
Podobne prezentacje
Sposoby implementacji asocjacji
Advertisements

Implementacja ekstensji klasy
Hibernate relacje.
Techniki i języki programowania
PIO 3_2, Zofia Kruczkiewicz1 Wykład 3 – część druga Iteracyjno-rozwojowy cykl oprogramowania 3.
BJUG_1: Typy Generyczne, Kolekcje
Klasy kolekcji Tomasz Wilczyński. Kolekcja Schemat kolekcji Javy zawiera sześć interfejsów oraz kilka innych implementacji tych interfejsów do celów ogólnych.
Object-relational mapping (aka O/RM, ORM, and O/R mapping)
Kolekcje (3) Zbiory. Porównywanie i porządkowanie elementów kolekcji. (c) Krzysztof Barteczko 2014.
Kolekcje (4) Mapy Widoki i algorytmy (c) Krzysztof Barteczko 2014.
Typy i metody sparametryzowane (generics) (c) Krzysztof Barteczko 2014.
1 Kolekcje © Krzysztof Barteczko, PJWSTK Pojęcie kolekcji Kolekcja jest obiektem, który grupuje elementy danych (inne obiekty) i pozwala traktować.
1 Kolekcje i tablice © Krzysztof Barteczko, PJWSTK 2009.
Asocjacja,Kompozycja,Agregacja
Implementacja asocjacji (z atrybutami i bez) przy użyciu: referencji (kolekcji referencji) tablic asocjacyjnych przygotował: Kamil Kowalczyk.
Rozwój infrastruktury sportowej w Gminie Wyszków Analiza wariantowa.
OBOWIĄZKI INFORMACYJNE BENEFICJENTA Zintegrowane Inwestycje Terytorialne Aglomeracji Wałbrzyskiej.
Tworzenie odwołania zewnętrznego (łącza) do zakresu komórek w innym skoroszycie Możliwości efektywnego stosowania odwołań zewnętrznych Odwołania zewnętrzne.
Teoria gry organizacyjnej Każdy człowiek wciąż jest uczestnikiem wielu różnych gier. Teoria gier zajmuje się wyborami podejmowanymi przez ludzi w warunkach.
Rozliczanie kosztów działalności pomocniczej
Excel 2007 dla średniozaawansowanych zajęcia z dnia
Wyrażenia Algebraiczne Bibliografia Znak 1Znak 2 Znak 3 Znak 4 Znak 5 Znak 6 Znak 7 Znak 8 Znak 9 Znak 10 Znak 11.
Podstawowe konstrukcje języka Java Bartosz Walter InMoST Wielkopolska sieć współpracy w zakresie innowacyjnych metod wytwarzania oprogramowania Termin.
Warstwa biznesowaWarstwa techniczna ??? To przejście jest połączone z innym procesem To przejście wywołuje samowyzwalacz To przejście jest warunkowe.
Ryzyko a stopa zwrotu. Standardowe narzędzia inwestowania Analiza fundamentalna – ocena kondycji i perspektyw rozwoju podmiotu emitującego papiery wartościowe.
Literary Reference Center Przewodnik
EWALUACJA JAKO ISTOTNY ELEMENT PROJEKTÓW SYSTEMOWYCH Sonia Rzeczkowska.
Zmienne losowe Zmienne losowe oznacza się dużymi literami alfabetu łacińskiego, na przykład X, Y, Z. Natomiast wartości jakie one przyjmują odpowiednio.
Kontrakty terminowe na indeks mWIG40 Prezentacja dla inwestorów Giełda Papierów Wartościowych w Warszawie S.A. Dział Notowań GPW kwiecień 2005.
ANALIZA DANYCH DO OPRACOWANIA MAP TEMATYCZNYCH HALINA KLIMCZAK INSTYTUT GEODEZJI I GEOINFORMATYKI UNIWERSYTET PRZYRODNICZY WE WROCŁAWIU.
Porównywarki cen leków w Polsce i na świecie. Porównywarki w Polsce.
Algorytmy Informatyka Zakres rozszerzony
Repozytoria uczelniane i ich rola w projekcie SYNAT Warszawa Maj 2013 Jak Cię widzą, tak Cię piszą…
Teoria masowej obsługi Michał Suchanek Katedra Ekonomiki i Funkcjonowania Przedsiębiorstw Transportowych.
Menu Jednomiany Wyrażenia algebraiczne -definicja Mnożenie i dzielenie sum algebraicznych przez jednomian Mnożenie sum algebraicznych Wzory skróconego.
Python. Języki Programistyczne Microcode Machine code Assembly Language (symboliczna reprezentacja machine code) Low-level Programming Language (FORTRAN,
ORGANIZACJA LOGICZNA PLIKÓW. Wprowadzenie (1) Organizacja pliku określa sposób uporządkowania rekordów w pliku przechowywanym na dysku Różne sposoby organizacji.
Metody obiektowe Bartosz Walter Szkolenie InMoST 21 lutego 2006.
Innowacyjne metody wytwarzania oprogramowania Wprowadzenie do refaktoryzacji Bartosz Walter.
Definiowanie i planowanie zadań typu P 1.  Planowanie zadań typu P  Zadania typu P to zadania unikalne służące zwykle dokonaniu jednorazowej, konkretnej.
Projektowanie systemów cyfrowych z wykorzystaniem języka VHDL Układy sekwencyjne.
Jak tworzymy katalog alfabetyczny? Oprac.Regina Lewańska.
Język Java Paweł Rajba
Dziedziczenie, polimorfizm, Interfejsy
Programowanie Obiektowe – Wykład 1
Schematy blokowe.
(według:
On-the-Fly Garbage Collection
Akademia C# - Lab2 Zmienne, instrukcje warunkowe, pętle, debugger,
Programowanie obiektowe II
ALGORYTMY I STRUKTURY DANYCH
Akademia C# lab. 9 Zdarzenia i delegaty.
Programowanie obiektowe Wykład 10
Klasy wewnętrzne. Praktyka użycia interfejsów i klas wewnętrznych
Kurs języka C++ – wykład 13 ( )
Git - system kontroli wersji
Języki programowania.
Dynamics 365 CE i język TypeScript
Podstawy informatyki Zygfryd Głowacz.
Programowanie obiektowe Wykład 11
Porównywanie średnich prób o rozkładach normalnych (testy t-studenta)
MATEMATYKAAKYTAMETAM
PGO Kolekcje Michail Mokkas.
Iteracyjno-rozwojowy cykl oprogramowania 2
Implementacja rekurencji w języku Haskell
Bufory.
PGO Porównywanie obiektów
Zapis prezentacji:

Wprowadzenie do języka Java Kolekcje w języku Java Bartosz Walter

Szkolenie z języka Java Biblioteka Java Collections (2) Plan wykładu Historia Java Collections Podstawowe interfejsy i ich odpowiedzialność Iteratory Klasy pomocnicze i ich funkcjonalność Obiekty opakowujące Porównywanie obiektów Typy generyczne

Szkolenie z języka Java Biblioteka Java Collections (3) Historia 1995: JDK 1.0 –niezależne klasy kolekcji: tablice Vector, Hashtable o niespójnym sposobie dostępu do elementów –brak wydzielonych interfejsów 1998: JDK 1.2 –oparcie kolekcji na interfejsach Collection, Set, List i Map oraz różnorodnych implementacjach –iteratory, algorytmy, porównania 2005: JDK 1.5 –wprowadzenie typów generycznych

Szkolenie z języka Java Biblioteka Java Collections (4) Interfejs java.util.Collection

Szkolenie z języka Java Biblioteka Java Collections (5) Collection: specyfikacja Wspólny interfejs dla większości kolekcji Reprezentuje obiekt zarządzający grupą elementów Brak ograniczeń dotyczących elementów Dwa obligatoryjne konstruktory: –bezparametrowy: Collection() –kopiujący: Collection(Collection src) Konstruktor zapewnia utworzenie obiektu zgodnego z semantyką danej kolekcji Metody nieobowiązkowe mogą zgłaszać wyjątek java.lang.UnsupportedOperationException Brak bezpośredniej implementacji w JDK

Szkolenie z języka Java Biblioteka Java Collections (6) Collection: przegląd wybranych metod operacje podstawowe – wykonywane na obiektach boolean add(Object obj) boolean remove(Object obj) boolean contains(Object obj) operacje grupowe – wykonywane na kolekcjach obiektów boolean addAll(Collection coll) boolean removeAll(Collection coll) boolean containsAll(Collection coll) boolean retainAll(Collection coll) void clear()

Szkolenie z języka Java Biblioteka Java Collections (7) Collection: przegląd wybranych metod cd. inspekcja int size() boolean isEmpty(Object obj) iteracja Iterator iterator() operacje na tablicach – konwersja do tablic Object[] toArray() Object[] toArray(Object[] type)

Szkolenie z języka Java Biblioteka Java Collections (8) Interfejs java.util.List

Szkolenie z języka Java Biblioteka Java Collections (9) List: specyfikacja Reprezentacja uporządkowanej sekwencji elementów Większość implementacji dopuszcza istnienie duplikatów elementów Najważniejsze implementacje: ArrayList, LinkedList, Vector, Stack AlamakotaakotmaAlę długość: 7 wycinek 4-6

Szkolenie z języka Java Biblioteka Java Collections (10) List: przegląd wybranych metod dostęp pozycyjny do elementów Object get(int indeks) Object set(int indeks) Object add(int indeks) Object remove(int indeks) wyszukiwanie int indexOf(Object obiekt) int lastIndexOf(Object obiekt) rozszerzona iteracja ListIterator listIterator() widok przedziałowy List subList(int poczatek, int koniec)

Szkolenie z języka Java Biblioteka Java Collections (11) Interfejs java.util.Queue

Szkolenie z języka Java Biblioteka Java Collections (12) Queue: specyfikacja Bezpośredni potomek interfejsu Collection Reprezentacja kolejki (LIFO, FIFO, priorytetowa) Podział na pierwszy element (głowę) i pozostałą część kolejki (ogon) Najważniejsze implementacje: LinkedList, PriorityQueue głowa ogon AlamakotaakotmaAlę

Szkolenie z języka Java Biblioteka Java Collections (13) Queue: przegląd metod Metody niezależne od interfejsu Collection: dodawanie elementu boolean offer(Object obiekt) usuwanie elementu Object remove() Object poll() inspekcja Object element() Object peek()

Szkolenie z języka Java Biblioteka Java Collections (14) Przykład public class Odliczanie { public static void main(String[] args) { int liczba = Integer.parseInt(args[0]); Queue kolejka = new LinkedList(); for (int i = liczba; i >= 0; i--) { kolejka.add(i); } while (!kolejka.isEmpty()) { System.out.println(kolejka.remove()); }

Szkolenie z języka Java Biblioteka Java Collections (15) Interfejs java.util.Set

Szkolenie z języka Java Biblioteka Java Collections (16) Set: specyfikacja Reprezentacja zbioru matematycznego –brak relacji porządku wewnątrz zbioru –brak duplikatów Brak nowych metod w stosunku do Collection najważniejsze implementacje: HashSet, TreeSet Ala ma kota a kot Alę

Szkolenie z języka Java Biblioteka Java Collections (17) Przykład public class Duplikaty { public static void main(String args[]) { Set s = new HashSet(); for (int i = 0; i < args.length; i++) { if (! s.add(args[i])) System.out.println("Duplikat!"); }

Szkolenie z języka Java Biblioteka Java Collections (18) Interfejs java.util.Map

Szkolenie z języka Java Biblioteka Java Collections (19) Map: specyfikacja Kolekcja jednoznacznych odwzorowań klucz-wartość Klucze, wartości i pary klucz-wartość dostępne jako obiekty Collection Dwa obowiązkowe konstruktory (analogicznie do kolekcji) Najważniejsze implementacje: HashMap, TreeMap, SortedMap "Ala" "kot" "kota" "Alę" kluczewartości "Ola"

Szkolenie z języka Java Biblioteka Java Collections (20) Map: przegląd metod operacje podstawowe Object put(Object klucz, Object wartosc) Object get(Object klucz) Object remove(Object klucz) boolean containsKey(Object klucz) boolean containsValue(Object wartosc) operacje grupowe void putAll(Map zrodlo) widoki-kolekcje Set keySet() Collection values() Set entrySet()

Szkolenie z języka Java Biblioteka Java Collections (21) Przykład public class Czestotliwosc { private static final Integer JEDEN = new Integer(1); public static void main(String args[]) { Map mapa = new HashMap(); for (int i=0; i<args.length; i++) { Integer czest = (Integer) mapa.get(args[i]); mapa.put(args[i], (czest == null ? JEDEN : new Integer(czest.intValue() + 1))); } System.out.println(mapa.size() + " różnych słów"); System.out.println(mapa); }

Szkolenie z języka Java Biblioteka Java Collections (22) Iteratory

Szkolenie z języka Java Biblioteka Java Collections (23) Iteratory: specyfikacja Umożliwiają sekwencyjny dostęp do wszystkich elementów kolekcji niezależnie od jej implementacji Dwa rodzaje iteratorów –java.util.Iterator – istnieje w każdej kolekcji –java.util.ListIterator – istnieje tylko w listach, wykorzystuje jej rozszerzone możliwości Ala ma kota a kot Alę Iterator bieżący element: "Ala" następny elenent: "kot" kolekcja

Szkolenie z języka Java Biblioteka Java Collections (24) Przykład public class Iteracja { public static void main(String args[]) { Collection coll = new ArrayList(); for (int i = 0; i < args.length; i++) { coll.add(args[i]); } for (Iterator iter = coll.iterator(); iter.hasNext();) String element = (String) iter.next(); System.out.println("element = " + element); } > java Iteracja Ala ma kota element = Ala element = ma element = kota

Szkolenie z języka Java Biblioteka Java Collections (25) Klasy pomocnicze

Szkolenie z języka Java Biblioteka Java Collections (26) Algorytmy Metody statyczne klasy Collections implementują typowe algorytmy wykonywane na kolekcjach: wyszukiwanie binarne sortowanie operacje algebraiczne na zbiorach odwracanie list permutacje list wyszukiwanie elementów max/min

Szkolenie z języka Java Biblioteka Java Collections (27) Niezmienność kolekcji Klasa Collections posiada także metody statyczne, pozwalające zmieniać własności kolekcji, np. blokować metody modyfikujące kolekcję –Collection immutableCollection(Collection kol) –List immutableList(List lista) –Set immutableSet(Set zbior) –Map immutableMap(Map mapa) Metody te w rzeczywistości tworzą obiekt opakowujący kolekcję i przechwytujący wywołania metod

Szkolenie z języka Java Biblioteka Java Collections (28) Przykład kolekcja dekorator kolekcji add()size() Kolekcja Collection jest "opakowana" w obiekt blokujący niektóre metody. Wywołania metody size() są przez obiekt opakowujący delegowane do wewnętrznej kolekcji, natomiast metody add() – blokowane.

Szkolenie z języka Java Biblioteka Java Collections (29) Inne klasy opakowujące Analogicznie, w klasie Collections istnieją inne metody tworzące specjalizowane obiekty opakowujące; nazwy metod są zgodne z konwencją i zależą od interfejsu –Interfejs synchronizedInterfejs(Interfejs i) zapewnia synchronizację dostępu do interfejsu; wielowątkowy dostęp powoduje zgłoszenie wyjątku –Interfejs checkedInterfejs(Interfejs i) zapewnia weryfikację typu wstawianego elementu do kolekcji

Szkolenie z języka Java Biblioteka Java Collections (30) Porównywanie obiektów

Szkolenie z języka Java Biblioteka Java Collections (31) Porównywanie obiektów Wiele algorytmów wykonywanych na kolekcjach (np. sortowanie, wyszukiwanie) wymaga zdefiniowania relacji częściowego porządku Relacja porównania jest intuicyjnie zdefiniowana dla liczb, ale nie dla obiektów –Czy można porównać obiekty różnych klas? –Jak porównać dwie osoby? Porównywalność jest własnością obiektu, którą można z niego wyłączyć Java Collections korzysta z dwóch interfejsów służących do porównywania obiektów –java.lang.Comparable –java.util.Comparator

Szkolenie z języka Java Biblioteka Java Collections (32) Interfejs Comparable Jak posortować listę osób wg daty urodzenia? –Collections.sort(people) public class Person implements Comparable { private Date birthday; public Date getBirthday() { return birthday; } public int compareTo (Object obj) { String birthday = ((Person) obj).getBirthday(); return (this.birthday.compareTo(birthday)); }

Szkolenie z języka Java Biblioteka Java Collections (33) Interfejs Comparable cd. Jak posortować listę osób wg daty urodzenia? –Collections.sort(people) Sortowanie jest możliwe tylko dla list zawierających obiekty implementujące interfejs java.lang.Comparable Comparable definiuje jedną metodę, compareTo(Object o), która zwraca –mniej niż 0 – gdy jej parametr jest większy niż własny obiekt –0 – gdy jej parametr jest równy własnemu obiektowi –więcej niż 0 – gdy jej parametr jest mniejszy niż własny obiekt

Szkolenie z języka Java Biblioteka Java Collections (34) Interfejs Comparator Interfejs Comparator oferuje podobną funkcjonalność jak Comparable, ale porównuje ze sobą dwa obiekty przekazane jako parametry Comparator definiuje jedną metodę, compare (Object o1, Object o2), analogiczną do metody Comparable.compareTo(Object o) Comparator przekazywany jest jako parametr metod sortujących, wyszukujących etc. –Collections.sort(people, comparator) Sortowanie z wykorzystaniem interfejsu Comparator jest możliwe dla dowolnych obiektów

Szkolenie z języka Java Biblioteka Java Collections (35) Przykład public class BirthdayComparator implements Comparator{ public int compare (Object obj1, Object obj2) { Date birthday1 = ((Person) obj1).getBirthday(); Date birthday2 = ((Person) obj1).getBirthday(); return birthday1.compareTo(birthday2); } Collections.sort(people, new BirthdayComparator());

Szkolenie z języka Java Biblioteka Java Collections (36) Typy generyczne Wprowadzone w Java 5.0 SE (a.k.a. JDK 1.5) Przykład polimorfizmu parametrycznego: typ obiektu zależy od parametru weryfikowanego w momencie uruchomienia, a nie kompilacji Weryfikacja typów obiektów w momencie kompilacji, potem typy są wymazywane (ang. erasure) List lista = new ArrayList ();

Szkolenie z języka Java Biblioteka Java Collections (37) Przykład List coll = new ArrayList(); for (Iterator iter = coll.iterator(); iter.hasNext(); ) Person osoba = (Person) iter.next(); System.out.println("osoba = " + person); } List coll = new ArrayList (); for (Iterator iter = coll.iterator(); iter.hasNext(); ) Person osoba = iter.next(); System.out.println("osoba = " + person); } Tradycyjne odwołania do kolekcji Wykorzystanie typów generycznych

Szkolenie z języka Java Biblioteka Java Collections (38) Podsumowanie Java Collections przykładem biblioteki ewoluującej wraz z rozwojem języka Przykład dobrego wykorzystania interfejsów i implementacji Przemyślany podział odpowiedzialności interfejsów Rola wzorców projektowych Wykorzystanie najnowszych zmian w języku`