Tworzenie aplikacji w języku Java



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

Kurs programowania. Wykład 9. Wojciech Macyna

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

Programowanie w języku Java. Kolekcje

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

Java Collections Framework

Kolekcje. Na podstawie:

Realizacja ekstensji klasy. Paulina Strzelecka, Tomasz Roszkowski

Kolekcje - pakiet Java Collections Framework

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

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

Kolekcje - pakiet Java Collections Framework

Instrukcja 3 Laboratorium z Podstaw Inżynierii Oprogramowania

Tworzenie aplikacji w języku Java

Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania

Klasy i obiekty cz II

java.util.* :Kolekcje Tomasz Borzyszkowski

Programowanie Obiektowe (Java)

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

Programowanie w języku Java. Bazy danych SQLite w Javie

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

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

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 7

Lista, Stos, Kolejka, Tablica Asocjacyjna

Podstawy otwartych języków programowania Przechowywanie danych

Diagram stanów Laboratorium 9

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

Java: interfejsy i klasy wewnętrzne

Programowanie obiektowe

Laboratorium 8 Diagramy aktywności

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

Java SE Laboratorium nr 7. Temat: Kolekcje

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

Wykład 7 Abstrakcyjne typy danych słownik (lista symboli)

Informatyka I. Wykład 4. Tablice. Dr inż. Andrzej Czerepicki. Politechnika Warszawska Wydział Transportu 2018

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

Metody dostępu do danych

Kontenery i iteratory. Wykorzystanie kontenerów w praktyce.

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

Programowanie obiektowe

Dawid Gierszewski Adam Hanasko

Programowanie i struktury danych

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

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

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

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 6

Podstawy programowania obiektowego

Podstawy programowania obiektowego

Projektowanie obiektowe. dr Jarosław Skaruz

Wstęp do ruby dla programistów javy

Programowanie i projektowanie obiektowe

Programowanie obiektowe

Polimorfizm w pigułce

Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]

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

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

Programowanie obiektowe

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

Definiowanie własnych klas

Programowanie obiektowe

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

Programowanie obiektowe

TYPY GENERYCZNE (GENERICS)

Programowanie obiektowe

Modelowanie obiektowe

Comparable<Klasa_uzytkownika>

Aplikacje w Javie- wykład 11 Wątki-podstawy

MAS dr. Inż. Mariusz Trzaska. Realizacja różnych modeli dziedziczenia w obiektowych językach programowania

Podstawy programowania obiektowego

Podstawy programowania III WYKŁAD 4

Programowanie Komponentowe Zarządzanie obiektami: kontenery

Java Podstawy. Michał Bereta

Strumieniowe bazy danych. Piotr i Paweł

Systemy operacyjne na platformach mobilnych

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

Java Programowanie Obiektowe Ćwiczenie 1- wprowadzenie

Programowanie obiektowe i zdarzeniowe

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 5

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

Aplikacje Internetowe

Wprowadzenie db4o - podstawy db4o - technikalia Przydatne wiadomości. Wprowadzenie. db4o. Norbert Potocki. 1 czerwca Norbert Potocki db4o

Programowanie obiektowe

Programowanie obiektowe

Instrukcja 4 Laboratorium z Podstaw Inżynierii Oprogramowania. Warstwa klienta: Interfejs graficzny użytkownika

Programowanie i struktury danych

PRZYKŁAD. Prosta uczelnia. Autor: Jan Kowalski nr indeksu: (przykładowy projekt)

KOLEKCJE JAVY API: NAJPROSTSZE PODSTAWY

Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r.

Szablony klas, zastosowanie szablonów w programach

Java. Michał Wójcik.

Tablice cz. I Tablice jednowymiarowe, proste operacje na tablicach

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

Klasy abstrakcyjne, interfejsy i polimorfizm

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

GUI - projektowanie interfejsów cz. II

Programowanie obiektowe i zdarzeniowe

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

Platformy Programistyczne Podstawy języka Java

Podstawy programowania. Podstawy C# Tablice

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

Transkrypt:

Tworzenie aplikacji w języku Java Wykład 2 Java Collections Framework Piotr Czapiewski Wydział Informatyki ZUT 2 października 2009 Piotr Czapiewski (Wydział Informatyki ZUT) Tworzenie aplikacji w języku Java 2 października 2009 1 / 19

Wprowadzenie Kolekcja inaczej kontener Obiekt grupujacy/przechowuj acy elementy (wartości, obiekty) y kolekcji: zbiór, lista, wektor, mapa Składniki Java Collections Framework Interfejsy Implementacje (klasy) Algorytmy Piotr Czapiewski (Wydział Informatyki ZUT) Tworzenie aplikacji w języku Java 2 października 2009 2 / 19

Listy Lista interfejs java.util.list Uporzadkowany zbiór elementów, sekwencja Zachowana jest kolejność elementów pełna kontrola nad pozycja elementu na liście, dostęp do elementów wg indeksu Dopuszczalne duplikaty W uproszczeniu: lista to tablica o zmiennej długości owe implementacje java.util.arraylist java.util.linkedlist java.util.vector List<String> studenci = new ArrayList<String>(); studenci.add("newton"); studenci.add("einstein"); studenci.add("doda"); studenci.add("sokrates"); Piotr Czapiewski (Wydział Informatyki ZUT) Tworzenie aplikacji w języku Java 2 października 2009 3 / 19

Listy // jaki jest rozmiar listy? int n = studenci.size(); // pobierz pierwszy element String nazwisko = studenci.get(0); // skreśl z listy studenta o indeksie 2 (licząc od zera) studenci.remove(2); // skreśl Einsteina z listy studentów studenci.remove("einstein"); // czy mamy Dodę na liście? boolean b = studenci.contains("doda"); Piotr Czapiewski (Wydział Informatyki ZUT) Tworzenie aplikacji w języku Java 2 października 2009 4 / 19

Listy Klasa java.util.collections zawiera pomocnicze metody statyczne do operowania na kolekcjach (podobnie jak klasa java.util.arrays dla tablic). Collections.sort(studenci); System.out.println(studenci); Collections.reverse(studenci); System.out.println(studenci); Collections.shuffle(studenci); System.out.println(studenci); // [Doda, Einstein, Newton, Sokrates] // [Sokrates, Newton, Einstein, Doda] // [Sokrates, Einstein, Doda, Newton] Piotr Czapiewski (Wydział Informatyki ZUT) Tworzenie aplikacji w języku Java 2 października 2009 5 / 19

Listy List<String> grupa1 = new ArrayList<String>(); List<String> grupa2 = new ArrayList<String>(); // (wypełnij listy danymi...) // czy grupy przypadkiem nie mają elementów wspólnych? boolean b = Collections.disjoint(grupa1, grupa2); // likwidujemy drugą grupę, dodaj wszystkich studentów do pierwszej grupa1.addall(grupa2); // oj, dziekan wybrał ulubieńców i utworzył grupę specjalną List<String> grupas = new ArrayList<String>(); // (wypełnij listę danycmi...) // Usuwamy z grupy 1 wszystkich studentów, należących do grupy S grupa1.removeall(grupas); Piotr Czapiewski (Wydział Informatyki ZUT) Tworzenie aplikacji w języku Java 2 października 2009 6 / 19

Zbiory Zbiór interfejs java.util.set Nie może zawierać powtarzajacych się elementów Implementacje HashSet nie ma gwarancji zachowania kolejności; szybkie dodawanie i usuwanie TreeSet elementy sa automatycznie sortowane Set<String> studenci = new HashSet<String>(); studenci.add("newton"); studenci.add("einstein"); studenci.add("doda"); studenci.add("sokrates"); studenci.add("doda"); studenci.add("newton"); System.out.println(studenci); // [Sokrates, Newton, Doda, Einstein] Piotr Czapiewski (Wydział Informatyki ZUT) Tworzenie aplikacji w języku Java 2 października 2009 7 / 19

Zbiory Set<String> studenci = new HashSet<String>(); studenci.add("newton"); studenci.add("doda"); studenci.add("einstein"); studenci.add("sokrates"); System.out.println(studenci); // [Sokrates, Newton, Doda, Einstein] // zbiór typu TreeSet - z automatycznym sortowaniem Set<String> studenci2 = new TreeSet<String>(); // dodajmy do nowego zbioru wszystkich studentów studenci2.addall(studenci); System.out.println(studenci2); // [Doda, Einstein, Newton, Sokrates] Piotr Czapiewski (Wydział Informatyki ZUT) Tworzenie aplikacji w języku Java 2 października 2009 8 / 19

Iteracja po elementach kolekcji W przypadku listy iterację możemy przeprowadzić z licznikiem, jak dla zwykłej tablicy: List<String> studenci = new ArrayList<String>(); //... for(int i=0; i<studenci.size(); i++) { String s = studenci.get(i); System.out.println("Nazwisko: " + s); ale zwykle wygodniej jest tak: for(string s : studenci) { System.out.println("Nazwisko: " + s); Piotr Czapiewski (Wydział Informatyki ZUT) Tworzenie aplikacji w języku Java 2 października 2009 9 / 19

Mapy Mapa to kolekcja przechowujaca pary: klucz-wartość Inaczej: tablica asocjacyjna Map<Integer, String> studenci = new HashMap<Integer, String>(); studenci.put(117, "Kowalski"); studenci.put(235, "Nowak"); studenci.put(487, "Wiśniewski"); System.out.println(studenci); Wynik: {117=Kowalski, 235=Nowak, 487=Wiśniewski Piotr Czapiewski (Wydział Informatyki ZUT) Tworzenie aplikacji w języku Java 2 października 2009 10 / 19

Mapy Pobranie elementu z mapy odbywa się poprzez podanie klucza Map<Integer, String> studenci = new HashMap<Integer, String>(); studenci.put(117, "Kowalski"); studenci.put(235, "Nowak"); studenci.put(487, "Wiśniewski"); System.out.println(studenci); String s1 = studenci.get(235); System.out.println(s1); String s2 = studenci.get(487); System.out.println(s2); String s3 = studenci.get(666); System.out.println(s3); // "Nowak" // "Wiśniewski" // null Piotr Czapiewski (Wydział Informatyki ZUT) Tworzenie aplikacji w języku Java 2 października 2009 11 / 19

Mapy Iteracja po elementach mapy keyset - zbiór kluczy values - lista wartości entryset - zbiór elementów (par klucz-wartość) for(int klucz : studenci.keyset()) { String nazwisko = studenci.get(klucz); System.out.println(klucz + ": " + nazwisko); Piotr Czapiewski (Wydział Informatyki ZUT) Tworzenie aplikacji w języku Java 2 października 2009 12 / 19

Mapy Iteracja po elementach mapy keyset - zbiór kluczy values - lista wartości entryset - zbiór elementów (par klucz-wartość) for(string s : studenci.values()) { System.out.println("Nazwisko: " + s); Piotr Czapiewski (Wydział Informatyki ZUT) Tworzenie aplikacji w języku Java 2 października 2009 13 / 19

Mapy Iteracja po elementach mapy keyset - zbiór kluczy values - lista wartości entryset - zbiór elementów (par klucz-wartość) for(map.entry<integer, String> para : studenci.entryset()) { int klucz = para.getkey(); String nazwisko = para.getvalue(); System.out.println(klucz + ": " + nazwisko); Piotr Czapiewski (Wydział Informatyki ZUT) Tworzenie aplikacji w języku Java 2 października 2009 14 / 19

Mapy // Czy mamy na liście studenta o numerze 123? boolean b1 = studenci.containskey(123); // Czy mamy na liście studenta o nazwisku Kowalski? boolean b2 = studenci.containsvalue("kowalski"); // Usuńmy z listy studenta o numerze 117 studenci.remove(117); // A jak usunąć Kowalskiego? for(map.entry<integer, String> para : studenci.entryset()) { if(para.getvalue().equals("kowalski")) { studenci.remove(para.getkey()); break; Piotr Czapiewski (Wydział Informatyki ZUT) Tworzenie aplikacji w języku Java 2 października 2009 15 / 19

Przechowywanie złożonych obiektów w kolekcji class Student { int nrindeksu; String imie, nazwisko, kierunek; int rokstudiow; public Student(int nrindeksu, String imie, String nazwisko, String kierunek, int rokstudiow) { this.nrindeksu = nrindeksu; this.imie = imie; this.nazwisko = nazwisko; this.kierunek = kierunek; this.rokstudiow = rokstudiow; public String tostring() { String s = nrindeksu + ": " + imie + " " + nazwisko + " (" + kierunek + ", " + rokstudiow + " rok)"; return s; Piotr Czapiewski (Wydział Informatyki ZUT) Tworzenie aplikacji w języku Java 2 października 2009 16 / 19

Przechowywanie złożonych obiektów w kolekcji class Student {...... Map<Integer, Student> m1 = new TreeMap<Integer, Student>(); Student st1 = new Student(732, "Jan", "Kowalski", "Informatyka", 3); Student st2 = new Student(653, "Tomasz", "Nowak", "Informatyka", 2); m1.put(st1.nrindeksu, st1); m1.put(st2.nrindeksu, st2); Student x = m1.get(732); System.out.println(x); // Wynik: // 732: Jan Kowalski (Informatyka, 3 rok) Piotr Czapiewski (Wydział Informatyki ZUT) Tworzenie aplikacji w języku Java 2 października 2009 17 / 19

Przechowywanie złożonych obiektów w kolekcji class Dziennik { Map<Integer, Student> m1 = new TreeMap<Integer, Student>(); Map<String, Student> m2 = new TreeMap<String, Student>(); public Dziennik() { public void dodajstudenta(student s) { m1.put(s.nrindeksu, s); m2.put(s.nazwisko, s); public Student znajdzstudenta(int nr) { return m1.get(nr); public Student znajdzstudenta(string nazwisko) { return m2.get(nazwisko); Piotr Czapiewski (Wydział Informatyki ZUT) Tworzenie aplikacji w języku Java 2 października 2009 18 / 19

Przechowywanie złożonych obiektów w kolekcji Dziennik d = new Dziennik(); d.dodajstudenta(st1); d.dodajstudenta(st2); Student x1 = d.znajdzstudenta("kowalski"); Student x2 = d.znajdzstudenta(653); x1.rokstudiow = 4; System.out.println(x1); // 732: Jan Kowalski (Informatyka, 4 rok) System.out.println(d.znajdzStudenta("Kowalski")); // 732: Jan Kowalski (Informatyka, 4 rok) System.out.println(d.znajdzStudenta(732)); // 732: Jan Kowalski (Informatyka, 4 rok) Piotr Czapiewski (Wydział Informatyki ZUT) Tworzenie aplikacji w języku Java 2 października 2009 19 / 19