Kolekcje - pakiet Java Collections Framework

Podobne dokumenty
Kolekcje - pakiet Java Collections Framework

Programowanie w języku Java. Kolekcje

Kolekcje mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011

Kolekcje. Na podstawie:

Programowanie Obiektowe (Java)

Kolekcja (kontener) to po prostu obiekt, który grupuje wiele elementów w jeden twór.

Dawid Gierszewski Adam Hanasko

Realizacja ekstensji klasy. Paulina Strzelecka, Tomasz Roszkowski

java.util.* :Kolekcje Tomasz Borzyszkowski

Java niezbędnik programisty spotkanie nr 8. Kolekcje c.d.

Programowanie obiektowe

Java Collections Framework

Programowanie w Javie- wykład 11 Kolekcje (listy)

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

Język JAVA podstawy. Wykład 4, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Język Java część 2 (przykładowa aplikacja)

Kurs programowania. Wykład 9. Wojciech Macyna

Tworzenie aplikacji w języku Java

Podstawy otwartych języków programowania Przechowywanie danych

Wykład 5 Wybrane zagadnienia programowania w C++ (c.d.)

Programowanie i projektowanie obiektowe

Wydział Fizyki i Informatyki Stosowanej, Uniwersytetu Łódzkiego Łódź. Java podstawy języka, wykład 4 1

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Język Java część 2 (przykładowa aplikacja)

jlabel: void setalignment(label.center/left/right) - wyrównanie String gettext() pobiera aktualny tekst napisu void settext(string text) ustawia

2. Klasy cz. 2 - Konstruktor kopiujący. Pola tworzone statycznie i dynamicznie - Funkcje zaprzyjaźnione - Składowe statyczne

Definiowanie własnych klas

KOLEKCJE JAVY API: NAJPROSTSZE PODSTAWY

Lista, Stos, Kolejka, Tablica Asocjacyjna

Programowanie i struktury danych

Java SE Laboratorium nr 7. Temat: Kolekcje

Kolekcje w Javie cz. 1

Kolekcje. object that groups multiple elements into a single unit

Definiowanie własnych klas

Wykład 4. Klasa List Kolejki Stosy Słowniki

Wykład 4: Klasy i Metody

Języki i metody programowania Java INF302W Wykład 3 (część 2)

Języki i metody programowania Java INF302W Wykład 2 (część 1)

Platformy Programistyczne Podstawy języka Java

Algorytmy i Struktury Danych. Anna Paszyńska

JAVA W SUPER EXPRESOWEJ PIGUŁCE

Comparable<Klasa_uzytkownika>

GUI - projektowanie interfejsów cz. II

Kolekcje obiektów. Wyj tki.

Języki i metody programowania Java. Wykład 2 (część 2)

Kompozycja i dziedziczenie klas

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 7

Programowanie w C++ Wykład 7. Katarzyna Grzelak. 23 kwietnia K.Grzelak (Wykład 7) Programowanie w C++ 1 / 40

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

Programowanie w C++ Wykład 6. Katarzyna Grzelak. 1 kwietnia K.Grzelak (Wykład 6) Programowanie w C++ 1 / 43

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),


Dokumentacja do API Javy.

import java.util.*; public class ListExample { public static void main(string args[]) { List<String> lista1= new ArrayList<String> ();

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object

Wykład 7: Pakiety i Interfejsy

Programowanie obiektowe

Kiedy potrzebne. Struktura (rekord) Struktura w języku C# Tablice struktur. struktura, kolekcja

Programowanie obiektowe

STL: Lekcja 1&2. Filozofia STL

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 6

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania

Programowanie obiektowe

Programowanie obiektowe i język Java

Java: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Java: interfejsy i klasy wewnętrzne

dziedziczenie - po nazwie klasy wystąpią słowa: extends nazwa_superklasy

Polimorfizm. dr Jarosław Skaruz

Diagram stanów Laboratorium 9

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.

Język Java wątki (streszczenie)

Języki i metody programowania Java Lab4 podejście obiektowe, zastosowanie pojemników

Programowanie i projektowanie obiektowe

Kolekcje w języku Java

Klasy abstrakcyjne, interfejsy i polimorfizm

Multimedia JAVA. Historia

Szablony funkcji i szablony klas

Klasy i obiekty cz II

Programowanie obiektowe

Programowanie obiektowe

STL Standardt Template Library (wprowadzenie)

Programowanie i struktury danych. Wykład 4 Dr Piotr Cybula

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

Aplikacje Internetowe. Najprostsza aplikacja. Komponenty Javy. Podstawy języka Java

Informatyka I. Klasy i obiekty. Podstawy programowania obiektowego. dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

Programowanie obiektowe

Projektowanie obiektowe Wzorce projektowe

Szablony funkcji i klas (templates)

Podejście obiektowe. Tablice (1) obiektów

Podstawy programowania obiektowego

Programowanie obiektowe

Wielowątkowość. Programowanie w środowisku rozproszonym. Wykład 1.

Programowanie obiektowe

Współbieżność w środowisku Java

Kontenery i iteratory. Wykorzystanie kontenerów w praktyce.

Programowanie sieciowe

Transkrypt:

Programowanie obiektowe Kolekcje - pakiet Java Collections Framework Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Definicja kolekcji Kolekcja jest obiektem, który grupuje elementy danych (inne obiekty) i pozwala traktować je jak jeden zestaw danych, umoŝliwiając jednocześnie wykonywanie na nim operacji np. dodawania i usuwania oraz przeglądania elementów zestawu. Uwaga: W innych językach programowania kolekcje są nazywane kontenerami. W Javie kontenery są specjalnymi kolekcjami, które grupują komponenty graficznego interfejsu uŝytkownika (GUI). Przykłady kolekcji: folder poczty elektronicznej kolekcja e-maili, katalog na dysku kolekcja plików i katalogów, słownik ortograficzny kolekcja poprawnych słów. Programowanie obiektowe WYKŁAD 8 Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr 1 / 21 Programowanie obiektowe WYKŁAD 8 Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr 2 / 21 Tablice jako kolekcje Do zapamiętywania wielu danych moŝna wykorzystywać tablice. Przykład: class Tablica private static final int ROZMIAR = 5; private String [] tablica = new String[ROZMIAR]; private int ilosc = 0; public int size() return ilosc; public boolean add(string s) if (ilosc==rozmiar) return false; tablica[ilosc++] = s; return true; public boolean remove(string s) for(int i=0; i<ilosc; i++) if( s.equals(tablica[i]) ) for(; i<ilosc-1; i++) tablica[i] = tablica[i+1]; tablica[--ilosc] = null; return true; return false; public Object get(int i) return tablica[i]; Programowanie obiektowe WYKŁAD 8 Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr 3 / 21 Tablice jako kolekcje cd. class TablicaImion public static void main(string [] args) Tablica imiona = new Tablica(); System.out.print( " " + imiona.get(i) ); System.out.println("\nUsuwam 2 imiona."); imiona.remove("ola"); imiona.remove("ula"); System.out.print(" " + imiona.get(i) ); System.out.print(" " + imiona.get(i) ); Programowanie obiektowe WYKŁAD 8 Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr 4 / 21

Tablice jako kolekcje cd. W języku Java tablice nie są wygodnym sposobem tworzenia kolekcji poniewaŝ: nie posiadają dedykowanych metod do obsługi kolekcji, rozmiar tablicy jest stały przepełnienie tablicy moŝe spowodować utratę pozostałych danych zapamiętanych w dedykowanych kolekcjach. Klasa Vector jako kolekcja Klasa Vector jest ulepszoną wersją kolekcji zbudowaną w oparciu o tablicę. Posiada ona zunifikowany zestaw metod, pozwalający wykonać podobne operacje jak przy bezpośrednich odwołaniach do tablicy, W praktycznych programach operacje na tablicach lepiej zastąpić operacjami na obiektach klasy Vector. Ta kolekcja nie ma stałego, z góry definiowanego rozmiaru. Gdy wymagany jest większy rozmiar to metody kolekcji Vector automatycznie: tworzą nową tablicę o poŝądanym rozmiarze, kopiują dane z dotychczasowej tablicy do nowej, usuwają dotychczasową tablicę. Programowanie obiektowe WYKŁAD 8 Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr 5 / 21 Programowanie obiektowe WYKŁAD 8 Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr 6 / 21 Klasa Vector jako kolekcja cd. Atrybuty: protected int capacityincrement - współczynnik o który jest zwiększana wielkość tablicy, protected int elementcount - liczba elementów zapamiętanych w kolekcji protected Object[] elementdata - tablica, w której są zapamiętane obiekty zawarte w kolekcji. Konstruktory: Vector() - tworzy pustą tablicę o wielkości 10 Vector(int capacity) - tworzy pustą tablicę o wielkości capacity Vector(int capacity, int increment) - tworzy pustą tablicę o wielkości capacity i ustawia atrybut increment, Vector(Collection c) - tworzy kolekcję wstępnie wypełnioną elementami kolekcji c Programowanie obiektowe WYKŁAD 8 Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr 7 / 21 Klasa Vector jako kolekcja cd. NajwaŜniejsze metody: void add(int index, Object element) - dodaje obiekt element na pozycji index, boolean add(object o) - dodaje obiekt element na końcu, boolean addall(collection c) - dodaje wszystkie obiekty z kolekcji c void insertelementat(object obj, int index) - wstawia element obj do tablicy na pozycji index. int capacity() - zwraca pojemność ( aktualną wielkość tablicy) int size() -zwraca liczbę elementów pamiętanych w tablicy, void clear() - usuwa wszystkie elementy z tablicy Programowanie obiektowe WYKŁAD 8 Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr 8 / 21

Klasa Vector jako kolekcja cd. boolean contains(object elem) - sprawdza, czy element elem jest pamiętany w tablicy int indexof(object elem) - wyszukuje w tablicy pozycji, w której jest pamiętany element elem ( porównywany za pomocą metody equals ) elementat(int index) - zwraca element pamiętany na pozycji index Object get(int index) - zwraca element pamiętany na pozycji index Object firstelement() - zwraca element pamiętany w tablicy na pozycji 0 Object lastelement() - zwraca ostatni pamiętany element boolean isempty() - sprawdza, czy wektor jest pusty Klasa Vector jako kolekcja cd. Object remove(int index) - usuwa z tablicy element pamiętany na pozycji index boolean remove(object o) - usuwa z tablicy pierwsze wystąpienie obiektu o void trimtosize() - zmniejsza rozmiar tablicy do wielkości równej liczbie aktualnie pamiętanych elementów Programowanie obiektowe WYKŁAD 8 Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr 9 / 21 Programowanie obiektowe WYKŁAD 8 Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr 10 / 21 Klasa Vector jako kolekcja - przykład import java.util.*; class WektorImion public static void main(string [] args) Vector imiona = new Vector(); System.out.print( " " + imiona.get(i) ); System.out.println("\nUsuwam 2 imiona."); imiona.remove("ola"); imiona.remove("ula"); System.out.print(" " + imiona.get(i) ); System.out.print(" " + imiona.get(i) ); tworzenie pustego dodawanie danych do pobieranie danych z usuwanie danych z odczyt aktualnego rozmiaru Architektura kolekcji Collections Framework Architektura kolekcji zestaw zunifikowanych struktur danych i zasad ich wykorzystywania do reprezentacji kolekcji. Składa się z: interfejsów, implementacji, algorytmów. Najbardziej znane architektury kolekcji to: STL Standard Templates Library w C++, klasy kolekcyjne w SmallTalk-u JFC Java Collections Framework Programowanie obiektowe WYKŁAD 8 Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr 11 / 21 Programowanie obiektowe WYKŁAD 8 Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr 12 / 21

Architektura kolekcji Collections Framework Podstawowe rodzaje kolekcji Interfejsy kolekcyjne abstrakcyjne typy danych będące szablonami (wzorcami) kolekcji zawierające metody pozwalające na niezaleŝne od szczegółów realizacyjnych operowanie na kolekcjach. Implementacja kolekcji konkretna realizacja metod zdefiniowanych przez interfejs kolekcyjny. Takie realizacje mogą róŝnić się szczegółami technicznymi, np. realizacja listy jako dynamicznej tablicy lub jako listy z dowiązaniami. Algorytmy kolekcyjne metody wykonujące uŝyteczne operacje obliczeniowe na kolekcjach, np. sortowanie i wyszukiwanie. Klasy JCF dostarczają środków do posługiwania się następującymi rodzajami kolekcji: listy i ich szczególne przypadki: stosy, kolejki, kolejki podwójne. zbiory i zbiory uporządkowane, mapy tablice asocjacyjne (słowniki) Programowanie obiektowe WYKŁAD 8 Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr 13 / 21 Programowanie obiektowe WYKŁAD 8 Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr 14 / 21 Podstawowe rodzaje kolekcji Lista zestaw elementów z których kaŝdy znajduje się na określonej pozycji. Elementy w liście są ułoŝone w takiej kolejności, w jakiej były dodawane. RóŜne elementy listy mogą zawierać takie same dane. Zbiór zestaw niepowtarzających się elementów. W zbiorze elementy nie mają pozycji. Nie jest moŝliwy dostęp do elementów zbioru po indeksach. Uporządkowanie elementów w zbiorze nie zaleŝy od kolejności dodawania/usuwania elementów. Mapa (tablica asocjacyjna, słownik) zestaw par klucz wartość, przy czym odwzorowanie kluczy w wartość jest jednoznaczne. Uporządkowanie par klucz wartość w mapie nie zaleŝy od kolejności dodawania/usuwania Ogólne operacje na kolekcjach Interfejs Collection definiuje wspólne właściwości i funkcjonalność wszystkich kolekcji (tzn. list, zbiorów i innych) poza mapami. Podstawowe operacje na kolekcjach: int size() - zwraca liczbę elementów zawartych w kolekcji boolean isempty() - sprawdza, czy kolekcja jest pusta boolean contains(object o) - sprawdza, czy kolekcja zawiera podany obiekt. boolean add(object o) - dodaje obiekt o do kolekcji. (Uwaga: operacja opcjonalna nie jest dozwolona dla klolekcji nimodyfikowalnych) boolean remove(object o) - usuwa obiekt o z kolekcji. (Uwaga: operacja opcjonalna nie jest dozwolona dla klolekcji nimodyfikowalnych) Programowanie obiektowe WYKŁAD 8 Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr 15 / 21 Programowanie obiektowe WYKŁAD 8 Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr 16 / 21

Iteratory Iterator jest obiektem słuŝącym do przeglądania elementów kolekcji oraz ewentualnego usuwania ich przy przeglądaniu. KaŜdy iterator implementuje interfejs Iterator, który zawiera następujące metody: Object next() -zwraca kolejny element kolekcji void remove() -usuwa element kolekcji, zwrócony przez ostatnie odwołanie do metody next() boolean hasnext() - zwraca true, jeśli moŝliwe jest odwołanie do metody next() tzn. w kolekcji jest jeszcze kolejny element. Iteratory cd. Interfejs Collection zawiera metodę iterator() która zwraca iterator umoŝliwiający przeglądanie kolekcji. Przykład: Przeglądanie i ewentualne usuwanie obiektów z kolekcji c Iterator iter = c.iterator(); while(iter.hasnext()) Object o = iter.next(); //... // wykonanie operacji na obiekcie o //... if ( warunek_usuniecia(o) ) iter.remove(); Programowanie obiektowe WYKŁAD 8 Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr 17 / 21 Programowanie obiektowe WYKŁAD 8 Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr 18 / 21 Operacje grupowe na kolekcjach Operacje grupowe na kolekcjach polegają na wykonywaniu za jednym razem pewnych operacji na całych kolekcjach. NaleŜą do nich metody: boolean addall(collection c) -dodanie do dowolnej kolekcji wszystkich elementów kolekcji przekazanej przez parametr c boolean removeall(collectin c) - usunięcie z kolekcji wszystkich elementów, które są zawarte w kolekcji przekazanej przez parametr c boolean retainall(collection) - pozostawienie w kolekcji tylko tych elementów, które są zawarte w kolekcji przekazanej przez parametr c void clear() - usunięcie wszystkich elementów kolekcji. Object [] toarray() - zwraca tablicę obiektów zawartych w kolekcji. Hierarchia list i zbiorów Podstawowe interfejsy kolekcji zbiorowych i listowych List Collection Set SortedSet ArrayList LinkedList HashSet TreeSet Podstawowe klasy implementujące LinkedHashSet Programowanie obiektowe WYKŁAD 8 Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr 19 / 21 Programowanie obiektowe WYKŁAD 8 Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr 20 / 21

Hierarchia map Podstawowe interfejsy map Map SortedMap TreeMap WeakHashMap HashMap Podstawowe klasy implementujące LinkedHashMap Programowanie obiektowe WYKŁAD 8 Autor: Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki PWr 21 / 21