Programowanie w języku Java. Kolekcje

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

Kolekcje. Na podstawie:

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

Kolekcje - pakiet Java Collections Framework

Programowanie obiektowe

Kolekcje - pakiet Java Collections Framework

Realizacja ekstensji klasy. Paulina Strzelecka, Tomasz Roszkowski

Java Collections Framework

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

Programowanie Obiektowe (Java)

Programowanie i projektowanie obiektowe

KOLEKCJE JAVY API: NAJPROSTSZE PODSTAWY

java.util.* :Kolekcje Tomasz Borzyszkowski

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

Dawid Gierszewski Adam Hanasko

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

Java SE Laboratorium nr 7. Temat: Kolekcje

Tworzenie aplikacji w języku Java

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

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

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

GUI - projektowanie interfejsów cz. II

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

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

Kurs programowania. Wykład 9. Wojciech Macyna

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

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

Lista, Stos, Kolejka, Tablica Asocjacyjna

Podstawy otwartych języków programowania Przechowywanie danych

dr inż. Piotr Czapiewski Tworzenie aplikacji w języku Java Laboratorium 1

Kolekcje w języku Java

Kolekcje obiektów. Wyj tki.

Java klasy kolekcji dr inż. Paweł Skrzyński, Java - kolekcje, 2010/2011

Algorytmy i. Wykład 3: Stosy, kolejki i listy. Dr inż. Paweł Kasprowski. FIFO First In First Out (kolejka) LIFO Last In First Out (stos)

Kolekcje w Javie cz. 1

Comparable<Klasa_uzytkownika>

2. Tablice. Tablice jednowymiarowe - wektory. Algorytmy i Struktury Danych


Programowanie aplikacji mobilnych

Platformy Programistyczne Podstawy języka Java

Kolekcje. object that groups multiple elements into a single unit

Programowanie i struktury danych

Aplikacje w Javie wykład 7 Kolekcje (listy, zbiory)

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

Programowanie obiektowe

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

Języki i Techniki Programowania II. Wykład 4. Kolekcje

Kontenery i iteratory. Wykorzystanie kontenerów w praktyce.

Programowanie w Javie - wykład 13 Kolekcje c.d. ( mapy)

Stos LIFO Last In First Out

Wykład 3 Składnia języka C# (cz. 2)

API STREAM WYRAŻENIA LAMBDA

Dla każdej operacji łącznie tworzenia danych i zapisu ich do pliku przeprowadzić pomiar czasu wykonania polecenia. Wyniki przedstawić w tabelce.

Programowanie obiektowe i język Java

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

Programowanie sieciowe

Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04

Listy, krotki, słowniki, funkcje

Struktury danych: stos, kolejka, lista, drzewo

Podstawy programowania. Podstawy C# Tablice

Wykład 4: Klasy i Metody

Java Zadanie 1. Aby poprawnie uruchomić aplikację desktopową, należy zaimplementować główną metodę zapewniającą punkt wejścia do programu.

TYPY GENERYCZNE (GENERICS)

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

Metody Metody, parametry, zwracanie wartości

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

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

Programowanie obiektowe

WYJĄTKI, KOLEKCJE ZAGADNIENIA: 1. Wyjątki, 2. Kolekcje, vector, hashtable, properties, Klasy Arrays i Collections.

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 7

Podejście obiektowe. Tablice obiektów Przykład 1 metody i atrybuty statyczne oraz niestatyczne

Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy)

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

Algorytmy i Struktury Danych.

Wybrane algorytmy tablicowe

Algorytmy i Struktury Danych. Anna Paszyńska

Wątki. Definiowanie wątków jako klas potomnych Thread. Nadpisanie metody run().

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

Pętle while, for, do while, instrukcje break, continue, switch 1. Pętle

Wykład 2: Podstawy Języka

STL: Lekcja 1&2. Filozofia STL

Aplikacje Internetowe

Pierwsze kroki. Algorytmy, niektóre zasady programowania, kompilacja, pierwszy program i jego struktura

Programowanie obiektowe

STL Standardt Template Library (wprowadzenie)

Podstawy programowania obiektowego

Zofia Kruczkiewicz, Programowanie obiektowe - java, wykład 2 1

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 6

Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania

Podstawy programowania obiektowego

Języki i metodyka programowania. Język C# pętle, sterowanie, wyjątki

Comparable<String>, CharSequence. Indicates whether some other object is "equal to" this one. int hashcode() Returns a hash code value for the object.

Wykład 8: Obsługa Wyjątków

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

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

1 Wątki 1. 2 Tworzenie wątków 1. 3 Synchronizacja 3. 4 Dodatki 3. 5 Algorytmy sortowania 4

Wstęp do ruby dla programistów javy

Algorytmy i Struktury Danych. Co dziś? Drzewo decyzyjne. Wykład IV Sortowania cd. Elementarne struktury danych

Kompletna dokumentacja kontenera C++ vector w -

Java. Michał Wójcik.

Transkrypt:

Programowanie w języku Java Kolekcje

Definicja Kolekcja to obiekt, 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.

Przykłady Folder na dysku komputera zawierający kolekcję plików Folder poczty email zawierający kolekcję wiadomości Kolekcja płyt

Java collection framework Java collection framework to architektura do zarządzania kolekcjami w skład której wchodzą: interfejsy: abstrakcyjne typy danych implementacje: konkretne implementacje abstrakcji algorytmy: metody, które wykonują obliczenia np. sortowanie lub wyszukiwanie.

Tablice to również kolekcje Poznane na poprzednich wykładach tablice są również kolekcjami jednak posiadają pewne ograniczenia: Rozmiar tablicy musi być określony podczas jej tworzenia i później nie może być zmieniony Nie posiadają dedykowanych metod do obsługi kolekcji.

Tablica jako kolekcja import java.util.*; public class Main { public static void main(string[] args) { int [] tablica = new int[5]; //tablica zawierająca pięć elementów typu całkowitego Random rand = new Random(); for(int x = 1; x < tablica.length; x++){ tablica[x] = rand.nextint(10); for(int x = 1; x < tablica.length; x++){ System.out.println(tablica[x]);

Klasa Vector jako kolekcja import java.util.*; public class Main { public static void main(string[] args) { Vector liczby = new Vector(); Random rand = new Random(); liczby.add(rand.nextint(100)); liczby.add(rand.nextint(100)); liczby.add(rand.nextint(100)); for(int i=0; i< liczby.size(); i++) { System.out.println( " " + liczby.get(i) ); liczby.remove(1); System.out.println("Po zmianie"); for(int i=0; i< liczby.size(); i++) { System.out.println( " " + liczby.get(i) );

Wybrane metody klasy Vector void add(int index, Object element) - dodaje obiekt element na pozycji podanej jako pierwszy paramtr, boolean add(object o) - dodaje obiekt element na koncu wektora, boolean addall(collection c) - dodaje wszystkie obiekty z kolekcji c int size() - zwraca liczbe elementów, void clear() - usuwa wszystkie elementy Object get(int index) - zwraca element z pozycji podanej jako parametr Object firstelement() - zwraca element z pozycji 0 Object lastelement() - zwraca ostatni element boolean isempty() - zwraca true jeśli vektor jest pusty Object remove(int index) - usuwana element podany jako parametr boolean remove(object o) - usuwa pierwse wystąpienie obiektu o void trimtosize() - dopasowuje rozmiar wektora do aktualnej liczby elementów

Interfejs Collection Interfejs Collection definiuje wspólne właściwości i funkcjonalności dla wszystkich kolekcji (tzn. list, zbiorów i innych) poza mapami.

Wybrane metody interfejsu Collection boolean add(object obj) boolean remove(object obj) boolean contains(object obj) boolean addall(collection coll) boolean removeall(collection coll) boolean containsall(collection coll) void clear() int size() boolean isempty(object obj)

Typy kolekcji Rodzaje kolekcji: Set: zbiór, kolekcja w której nie może być duplikatów. Nie możliwy dostęp po indeksach. Uporządkowanie elementów zależy List: kolekcja posortowana (sekwencja), może zawierać duplikaty Queue: kolekcja FIFO, posiada dodatkowe operacje: wstawianie, ekstrakcja, inspekcja Map: mapuje klucze na wartości SortedSet i SortedMap: możliwe sortowanie elementów oraz kluczy

Kolekcja Set Set to zbiór którego elementy nie mają przyporządkowanego indeksu. Dostęp odbywa się za pomocą iteratora. Najpopularniejsze implementacje: HashSet podstawowa implementacja, wykorzystuje mechanizm hashcode() wbudowany w język Java do organizacji przechowywania TreeSet przechowuje elementy w postaci drzewa, posortowane

Tworzenie kolekcji Set import java.util.*; public class Main { public static void main(string[] args) { Random rand = new Random(); Set<Integer> kolekcja = new HashSet<Integer>(); kolekcja.add(10); kolekcja.add(20); kolekcja.remove(10); for (int element : kolekcja) { System.out.println(element);

Metody kolekcji Set boolean add(object o) dodaje element boolean isempty() - zwraca true jeżeli kolekcja jest pusta boolean addall(collection c) dodaje wiele elementów Iterator iterator() - zwraca obiekt iteratora void clear() boolean - usuwa elementy kolekcji remove(object o) usuwa element kolekcji boolean contains(object o) zwraca true jeśli obiekt znajduje się w kolekcji Boolean removeall(collection c) usuwa wiele elementów Boolean containsall(collection c) zwraca true gdy elementy znajdują się w tablicy int size() - zwraca ilość elementów tablicy Object[] toarray() - konwertuje kolekcję na tablicę

Kolekcja List Lista to kolekcja w której do elementów możemy odwołać się za pomocą indeksów. Ten sam obiekt może się powtarzać. Dopuszczalne jest przechowywanie duplikatów. Implementacje: ArrayList - dane przechowywane w tablicy. Implementacja sprawdza się najlepiej gdy wykonujemy mniej operacji dodawania a więcej odczytywania. Odczyt kolekcji jest mniej wydajny przy pomocy for LinkedList - wydajniejsza gdy dodajemy wiele elementów a odczyt odbywa się za pomocą pętli foreach lub iteratora Dostęp za pomocą metod: get, set, remove

Metody List Object get(int indeks) zwraca element Object set(int indeks) dodaje element (zmienia wartość) Object add(int indeks) dodaje element. (przesuwa kolejne) Object remove(int indeks) usuwa element z podanym indeksem int indexof(object obiekt) zwraca index obiektu podanego jako parametrint lastindexof(object obiekt) zwraca indeks ostatniego wystąpienia obiektu podanego jako parametr ListIterator listiterator() - zwraca obiekt iterator List sublist(int poczatek, int koniec) zwraca podlistę z zakresu

Algorytmy dla List sort sortuje kolekcję shuffle permutacja reverse odwrócenie rotate rotacja o zadaną odległość swap zamiana elementów na podanych pozycjach. fill nadpisanie wartości w liście wartością zadaną. copy kopiowanie pomiędzy listami.

Tworzenie kolekcji List import java.util.*; public class Main { public static void main(string[] args) { List<String> kolekcja = new LinkedList<String>(); kolekcja.add("element 1"); kolekcja.add("element 2"); kolekcja.remove(0); System.out.println(kolekcja.get(0));

Kolekcja Queue Kolekcja Queue konstrukcja pozwalająca na implementację kolejek typu FIFO (first-in-first-out) i FILO (first-in-last-out, czasem nazywana stosem). Implementacje ArrayDeque Elementy przechowywane są w kolejności dodawania. Możliwy dostęp zarówno od strony głowy ( getfirst() ) jak i ogona ( getlast() ). PriorityQueue przechowywanie i dostęp do elementów odbywa się na podstawie określonego kryterium. Elementy sortowane są według komparatora (kryterium).

Tworzenie kolekcji Queue import java.util.*; public class Main { public static void main(string[] args) { Queue<String> kolekcja = new ArrayDeque<String>(); kolekcja.add("element 1"); kolekcja.add("element 2"); kolekcja.add("element 3"); System.out.println(kolekcja.remove());

Metody kolekcji Queue Add - dodaje element do kolekcji Offer - wstawia obiekt do kolejki w miejscu zależnym od implementacji (FIFO, LIFO czy priorytetowa). Remove usuwa głowę kolekcji Poll tak jak remove tylko nie zgłasza wyjątku gdy kolekcja jest pusta Element udostępnia element kolekcji Peek udostępnia element kolekcji bez zgłaszania wyjątku (zgłasza null)

Kolekcja Map Mapy nie są kolekcjami typu Collection, jednak również służą do przechowywania elementów. W mapach przechowywane są pary klucz - wartość. Aby dodać element do mapy należy podać klucz oraz wartość (put(k key m V value)). Aby pobrać wartość elementu należy podać jego klucz (V get(k key). Klucze w mapie muszą być unikalne, natomiast wartości mogą się powtarzać. Implementacje: HashMap kolejność oraz przechowywanie wynikają z implementacji funkcji hashcode() TreeMap elementy są posortowane i przechowywane według klucza

Tworzenie mapy import java.util.*; public class Main { public static void main(string[] args) { Map<String, String> kolekcja = new HashMap<String, String>(); kolekcja.put("klucz1", "wartość 1"); kolekcja.put("klucz2", "wartość 3"); System.out.println(kolekcja.get("klucz1"));

Metody Map Object put(object klucz, Object wartosc) wstawia do mapy nową parę klucz wartość; Object get(object klucz) - pobiera wartość przypisaną do podanego klucza Object remove(object klucz) usuwa element według klucza boolean containskey(object klucz) zwraca true gdy kolekcja zawiera element o podanym kluczu. boolean containsvalue(object wartosc) zwraca true gdy kolekcja zawiera element o podanej wartości. void putall(map zrodlo) dodaje grupę elementów Set keyset() - zwraca zbiór kluczy Collection values() - zwraca kolekcję wartości

Przechodzenie po kolekcji Za pomocą pętli: for (Object o : kolekcja) { System.out.println(o); Za pomocą iteratora: Iterator iter = kolekcja.iterator(); while(iter.hasnext()){ System.out.println(iter.next()); Za pomocą pętli i indeksu (ListArray) for(int x = 0; x < kolekcja1.size(); x++) { System.out.println(kolekcja1.get(x));