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

Podobne dokumenty
Kolekcje. Na podstawie:

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

Programowanie w języku Java. Kolekcje

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

Kolekcje - pakiet Java Collections Framework

Programowanie Obiektowe (Java)

Realizacja ekstensji klasy. Paulina Strzelecka, Tomasz Roszkowski

Kolekcje - pakiet Java Collections Framework

Programowanie obiektowe

KOLEKCJE JAVY API: NAJPROSTSZE PODSTAWY

java.util.* :Kolekcje Tomasz Borzyszkowski

Programowanie i projektowanie obiektowe

Java Collections Framework

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

Tworzenie aplikacji w języku Java

Kolekcje w języku Java

GUI - projektowanie interfejsów cz. II

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

Java SE Laboratorium nr 7. Temat: Kolekcje

Podstawy otwartych języków programowania Przechowywanie danych

Lista, Stos, Kolejka, Tablica Asocjacyjna

Kolekcje obiektów. Wyj tki.

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

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

Dawid Gierszewski Adam Hanasko

Kurs programowania. Wykład 9. Wojciech Macyna

Programowanie aplikacji mobilnych

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

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

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

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

Zadanie polega na stworzeniu bazy danych w pamięci zapewniającej efektywny dostęp do danych baza osób.

Kompletna dokumentacja kontenera C++ vector w -

Kontenery i iteratory. Wykorzystanie kontenerów w praktyce.

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

Języki programowania imperatywnego

Kolekcje w Javie cz. 1

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

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

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

Programowanie sieciowe

Programowanie obiektowe i język Java

Programowanie w języku Java

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

Programowanie i struktury danych

Kolekcje. object that groups multiple elements into a single unit

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

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


Comparable<Klasa_uzytkownika>

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

Algorytmy i Struktury Danych. Anna Paszyńska

Laboratorium z przedmiotu Programowanie obiektowe - zestaw 04

Podstawy obiektowości

Programowanie obiektowe

Platformy Programistyczne Podstawy języka Java

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

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

Algorytmy sortujące i wyszukujące

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

Zadania z podstaw programowania obiektowego

MAS dr. Inż. Mariusz Trzaska. Wykład 3. Wybrane konstrukcje obiektowych języków programowania (2)

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

Typy wyliczeniowe Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki

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

Zaawansowane programowanie w języku C++ Biblioteka standardowa

Klasy i obiekty cz II

Tabela wewnętrzna - definicja

Przychodnia 0. Stwórz projekt aplikacja konsolowa lub WPF (przemyśl wybór, bo zmiana może być czasochłonna). 1. Stwórz abstrakcyjną klasę Osoba.

Podstawy i języki programowania

STL: Lekcja 1&2. Filozofia STL

utworz tworzącą w pamięci dynamicznej tablicę dwuwymiarową liczb rzeczywistych, a następnie zerującą jej wszystkie elementy,

Aplikacje Internetowe

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

Podstawy programowania. Podstawy C# Tablice

Konwersje napis <-> liczba Struktury, unie Scanf / printf Wskaźniki

Podstawy technologii WWW

Algorytmy i struktury danych

Programowanie Komponentowe Zarządzanie obiektami: kontenery

Java niezbędnik programisty spotkanie nr 9. Java 2 Platform, Standard Edition 5.0

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

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

Bazy danych TERMINOLOGIA

STL Standardt Template Library (wprowadzenie)

Języki i techniki programowania Ćwiczenia 2

Teoretyczne podstawy informatyki

Interfejsy i klasy wewnętrzne

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

Teoretyczne podstawy informatyki

Przykładowe B+ drzewo

UML a kod. C++, Java i C#

Definiowanie własnych klas

Krzysztof Kadowski. PL-E3579, PL-EA0312,

> C++ dynamiczna alokacja/rezerwacja/przydział pamięci. Dane: Iwona Polak. Uniwersytet Śląski Instytut Informatyki

Podstawy i języki programowania

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)

Algorytmy i Struktury Danych.

Wykład 9 Kolekcje, pliki tekstowe, Przykład: Notatnik

Listy, krotki, słowniki, funkcje

Programowanie obiektowe

Transkrypt:

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

Kolekcja obiekt, który grupuje inne obiekty, traktując je jako jeden zestaw danych i pozwalający na wykonywanie operacji na tym zestawie danych np. aktualizacji. Jaka jest znana Państwu najprostsza kolekcja? Po co stosować kolekcje? Przykład: Książka adresowa dane osób zapisane są w pliku tekstowym. Należy te dane sczytać i zapisać w strukturze danych, ale nie ma informacji o tym ile jest już dodanych osób. Możliwe rozwiązania: Odczyt pliku by policzyć ile jest rekordów i na tej podstawie określić rozmiar tablicy przechowującej dane osób. Narzucenie maksymalnej liczby przechowywanych rekordów, bądź przepisywanie do innej tablicy jeśli przekroczony zostanie założony limit. Wykorzystanie kolekcji ArrayList

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

ArrayList (z pakietu java.util) lista zrealizowana za pomocą tablicy o dynamicznie rozszerzającej się (w miarę potrzeby) tablicy. Wybrane metody ArrayList: add(obiekt) dodanie elementu do końca listy get(index) pobranie elementu znajdującego się na pozycji index. size() liczba przechowywanych elementów. Jan Nowak Jan Kowalski Jan Kowalski

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)

Iterator obiekt służący do przechodzenia (przeglądania) po elementach kolekcji. Metoda iterator() zdefiniowana dla wszystkich kolekcji, zwraca obiekt-iterator służący do jej przeglądania. Metoda next() pozwala uzyskać dostęp do kolejnych elementów. Metoda hasnext() służy do sprawdzenia czy kolejny element można pobrać, czy też osiągnięto koniec kolekcji. Po co używać iteratorów?

A co jeśli chcemy dane przechowywane w ArrayList posortować? Można skorzystać z odpowiedniej metody statycznej klasy Collections.

A jeśli nie podamy typu przechowanego w kolekcji: Algorytmy kolekcyjne metody wykonujące operacje obliczeniowe na kolekcjach. Są one polimorficzne.

Reprezentacja kolejki (LIFO, FIFO, priorytetowa) Podział na pierwszy element (głowę) i pozostałą część kolejki (ogon) Najważniejsze implementacje: LinkedList, PriorityQueue. dodawanie elementu boolean offer(object obiekt) usuwanie elementu Object remove() Object poll() inspekcja Object element() Object peek()

Zbiór kolekcja reprezentująca zestaw niepowtarzających się elementów. W zbiorze elementy nie mają przyporządkowanej sobie pozycji brak indeksów. Porządek przeglądania zbioru nie jest ściśle określony. Jan Nowak Jan Kowalski

W przypadku zbiorów uporządkowanych, kolejność przeglądania jego elementów za pomocą iteratora jest ściśle określona (np. w porządku alfabetycznym rosnąco). Jan Kowalski Jan Nowak

HashMap jednoznacznie odwzorowuje klucze w wartości. Zaimplementowane za pomocą tablicy asocjacyjnej nazywanej w Javie mapą. Klucze, wartości i pary klucz-wartość dostępne jako obiekty Collection Wybrane metody HashMap: put(klucz, wartosc) dodanie nowej pary <klucz, wartość> get(klucz) pobranie wartości znajdującej się pod danym kluczem. Jeśli nie ma podanego klucza w kolekcji, zwracana jest wartość null.

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()

Klasa JCF Pozycja elementów Porządek Duplikaty Przykładowe użycie TreeSet Brak Rosnąco Nie Posortowana lista unikalnych słów HashSet Brak Brak Nie Lista unikalnych słów z szybkim dostępem ArrayList Numerycznie Brak Dozwolone Dynamicznie alokowana tablica LinkedList Numerycznie Kolejnośd wstawiania Dozwolone Lista słów, które często się zmieniają HashMap Obiekt jako klucz Brak Unikalne klucze Mapowanie słów na liczbę ich wystąpieo TreeMap Obiekt jako klucz Rosnąco Unikalne klucze Mapuje posortowane słowa na liczbę ich wystąpieo

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

operacje podstawowe wykonywane na obiektach boolean add(object obj) boolean remove(object obj) boolean contains(object obj) int size() boolean isempty(object obj) Iterator iterator() Object[] toarray() Object[] toarray(object[] type) 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()

1. Napisz program, który tworzy 3 różne kolekcje: jedną typu List i dwa typu Set. Do tych kolekcji dodać na przemian zawartość tablicy znaków i tablicy liczb. W wyniku działania programu powinno zostać wykonane: Wyświetlenie zawartości całej kolekcji (korzystając z iteratora) Konkatenacja wszystkich napisów. Zsumowanie wszystkich liczb. Zapewnić minimum kodowania. Wyświetlić informacje o wykorzystanej kolekcji. Przykład: String[] s = { ala, kot, pies, zebra, ala } int[] num = {1, 2, 7, 9, 2} Przy użyciu ArrayList: [ala, 1, kot, 2, pies, 7, zebra, 9, ala, 2] Konkatenacja: ala kot pies zebra ala Suma: 21 Przy użyciu HashSet [9, pies, zebra, 7, ala, kot, 2, 1] Konkatenacja: pies zebra ala kot Suma 19