Programozási nyelvek Java

Hasonló dokumentumok
Collections. Összetett adatstruktúrák

Programozási technológia

Java és web programozás

Java és web programozás

Generikus osztályok, gyűjtemények és algoritmusok

List<String> l1 = new ArrayList<String>(); List<Object> l2 = l1; // error

Generikus Típusok, Kollekciók

Reader /Writer InputStreamReader, OutputStreamWriter

Programozási nyelvek Java

Programozási nyelvek Java

.Net adatstruktúrák. Készítette: Major Péter

Tömbök, kollekciók és egyéb alaposztályok

Programozási nyelvek Java

Java osztálykönyvtár és használata

Gelle Kitti Algoritmusok és adatszerkezetek gyakorlat - 07 Hasítótáblák

Programozási nyelvek II.: JAVA

C# Nyelvi Elemei. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Nyelvi Elemei / 18

Algoritmusok és adatszerkezetek gyakorlat 06 Adatszerkezetek

Magas szintű programozási nyelvek 2 Előadás jegyzet

Dinamikus adatszerkezetek. 2D generikus tömb: C++ 2D generikus tömb: C++

Dinamikus adatszerkezetek. 2D generikus tömb: C++ 2D generikus tömb: C++ 2D tömb: Java versus C++ 2D tömb: Java.

Java tutorial. Object. Nehany alaposztaly, amit ismerni illik. tostring. equals vs. ==

Generikusok, Collections Framework JAVA PROGRAMOZÁS 5. GYAKORLAT

Programozási nyelvek Java

OOP: Java 8.Gy: Abstract osztályok, interfészek

Java bevezet o Kab odi L aszl o Kab odi L aszl o Java bevezet o

3. Osztályok II. Programozás II

Listák, szótárak, fájlok Listák, szótárak, fájlok

Adatszerkezetek. Nevezetes algoritmusok (Keresések, rendezések)

Programozási nyelvek II. JAVA EA+GY 1. gyakolat

Mi a különbség az extends és az implements között. Mikor melyiket kell használni? Comperable-t megvalósító oasztályokban össze lehet hasonlitani

Láncolt lista Bináris keresőfa Gráf Hasító táblázat. Programozás II. labor 2. rész (Adatszerkezetek)

JAVA SE/ME tanfolyam tematika

OOP: Java 11.Gy: Enumok, beágyazott osztályok. 13/1 B ITv: MAN

Programozás I. 8. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Java és web programozás

Komputeralgebra Rendszerek

RESIDENT EVIL CODENAME: NIK

Programozási nyelvek II.: JAVA

SQL*Plus. Felhasználók: SYS: rendszergazda SCOTT: demonstrációs adatbázis, táblái: EMP (dolgozó), DEPT (osztály) "közönséges" felhasználók

Programozás alapjai II. (7. ea) C++ Speciális adatszerkezetek. Tömbök. Kiegészítő anyag: speciális adatszerkezetek

Speciális adatszerkezetek. Programozás alapjai II. (8. ea) C++ Tömbök. Tömbök/2. N dimenziós tömb. Nagyméretű ritka tömbök

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

van neve lehetnek bemeneti paraméterei (argumentumai) lehet visszatérési értéke a függvényt úgy használjuk, hogy meghívjuk

Programozás alapjai II. (7. ea) C++

Programozási nyelvek II.: JAVA, 4. gyakorlat

Programozási nyelvek II. JAVA EA+GY 1. gyakolat

Programozási nyelvek II. JAVA

PowerShell v2.0 alapok. Nagy Miklós

ZH mintapélda. Feladat. Felület

Programozás alapjai. 5. előadás

Adatbázisok* tulajdonságai

Smalltalk 2. Készítette: Szabó Éva

Programozási technológia

Programozás I. Második ZH segédlet

Bánsághi Anna 2014 Bánsághi Anna 1 of 68

mul : S T N 1 ha t S mul(s, t) := 0 egyébként Keresés Ezt az eljárást a publikus m veletek lenti megvalósításánál használjuk.

Adatszerkezetek 2. Dr. Iványi Péter

WEBFEJLESZTÉS 2. ADATBÁZIS-KEZELÉS, OSZTÁLYOK

Bevezetés a Programozásba II 11. előadás. Adatszerkezetek megvalósítása. Adatszerkezetek megvalósítása Adatszerkezetek

Programozási segédlet

SZÁMÍTÓGÉPES PROBLÉMAMEGOLDÁS

Java programozási nyelv 7. rész Java osztálykönyvtár 1.

Java programozási nyelv 5. rész Osztályok III.

Programozási Nyelvek: C++

STL gyakorlat C++ Izsó Tamás május 9. Izsó Tamás STL gyakorlat/ 1

Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása

INFORMATIKA javítókulcs 2016

Programozás I. 5. gyakorlat. Szegedi Tudományegyetem Természettudományi és Informatikai Kar

Gyakorló feladatok ZH-ra

1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben?

Bevezetés a Programozásba II 12. előadás. Adatszerkezetek alkalmazása (Standard Template Library)

05. Sorold fel a primitív típusokat! byte : [ ] (8 bit : 1 bájt)

1. Template (sablon) 1.1. Függvénysablon Függvénysablon példányosítás Osztálysablon

Dokumentáció. 1. Beadandó feladat

Adatszerkezetek 1. előadás

15. tétel. Adatszerkezetek és algoritmusok vizsga Frissült: január 30.

Struktúra nélküli adatszerkezetek

A feladat lényege egy felhasználói típusnak a zsák típusnak a megvalósítása.

Alkalmazott modul: Programozás

Webes alkalmazások fejlesztése 10. előadás. Webszolgáltatások tesztelése (ASP.NET Core) Cserép Máté

Programozás I. Metódusok C#-ban Egyszerű programozási tételek. Sergyán Szabolcs

Programozási nyelvek II.: JAVA, 11. gyakorlat

Gyakorlati vizsgatevékenység A

Programozás II. labor

Programozási nyelvek II.: JAVA, 3. gyakorlat

Programozás alapjai C nyelv 8. gyakorlat. Mutatók és címek (ism.) Indirekció (ism)

Szövegek C++ -ban, a string osztály

Programozás I. Második ZH segédlet

ADATBÁZISKEZELÉS ADATBÁZIS

Egyszerű programozási tételek

Programozási nyelvek Java

Széchenyi István Egyetem. Programozás III. Varjasi Norbert

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)

Adattípusok, vezérlési szerkezetek. Informatika Szabó Adrienn szeptember 14.

Levelezős Programozás beugró (Java) december 1.

Programozási nyelvek Java

A gyakorlat során az alábbi ábrán látható négy entitáshoz kapcsolódó adatbevitelt fogjuk megoldani.

Programozás I. Gyakorlás egydimenziós tömbökkel Többdimenziós tömbök Gyakorló feladatok V 1.0 ÓE-NIK-AII,

Átírás:

Programozási nyelvek Java 12.gyakorlat Gyűjtemény keretrendszer (Collections Framework) A java.util.* csomag részei. Objektumok memóriában való tárolására, lekérdezésére és manipulálására szolgálnak. Általános célú adatszerkezetek Collection, List, Deque Set, SortedSet Map, SortedMap Nem megvalósított művelet UnsupportedOperationException-t dob. Copy konstruktorok vannak (egyik a másikra konvertálható). Műveletek csoportjai 1. Alapvető műveletek: size(), isempty(), contains(), add(), remove() 2. Elemek együttes kezelése: addall(), containsall(), removeall(), clear(), retainall() 3. Tömbbé konvertálás: A[] arr = (A[]) list.toarray(new A[list.size()]); A[] arr = (A[]) list.toarray(); Iterátorokkal rendelkeznek, használhatók a collection-önös for ciklusban. Halmaz Duplikált elemeket nem tartalmazhat. Szükséges hozzá az objektumon az equals() (2 halmaz egyenlő, ha ugyanazokat az elemeket tartalmazzák) és a hashcode() (hash-elő implementációk, nem számít a sorrend) metódusok felüldefiniálása. HashSet hatékonyabb, mint a TreeSet void add(object o): hozzáad egy elemet a halmazhoz void remove(object o): töröl egy elemet a halmazból void clear(): tölri a halmaz tartalmát int size(): megadja a halmaz méretét boolean isempty(): visszaadja, hogy üres-e a tömb boolean contains(object o): megivzsgálja, hogy tartalmazza-e az elemet

TreeSet kevésbé hatékony, de rendezett void add(object element): hozzáad egy elemet void addall(collection elements): hozzáadja az egész tartalmat void remove(object element): töröl egy elemet void clear(): törli a tartalmat int size(): megadja a méretét boolean isempty(): visszaadja, hogy üres-e boolean contains(object element): megvizsgálja, hogy tartalmazza-e az elemet Object first(): visszatér a legkisebb elemmel Object last(): visszatér a legnagyobb elemmel SortedSet headset(object toelement): a megadott elemig visszatér az összessel SortedSet tailset(object fromelement): a megadott elemtől visszatér az összessel SortedSet subset(object fromelement, Object toelement): visszatér a köztes elemekkel Lista Elemek tárolására, pozíció szerinti elérésére, iterációjára és részlista kezelésére szolgálnak. LinkedList<T> void add(object element): hozzáad egy elemet void add(int index, Object element): beszúr egy elemet az adott helyre void addfirst(object element): beszúrja a lista legelejére a megadott elemet void addlast(object element): beszúrja a lista legvégére a megadott elemet void addall(collection elements): hozzáadja az egész tartalmat void addall(int index, Collection elements): beszúrja az elemeket a megadott indextől kezdve void remove(int index): törli a megadott indexű elemet void remove(object element): törli az adott elemet void removefirst(): törli az első elemet void removelast(): törli az utolsó elemet void clear(): törli a tartalmat int size(): megadja a méretét boolean isempty(): visszaadja, hogy üres-e boolean contains(object element): megvizsgálja, hogy tartalmazza-e az elemet Object get(int index): visszatér az adott pozícióban levő elemmel Object getfirst(): visszatér a legelső elemmel Object getlast(): visszatér az utolsó elemmel int indexof(object element): visszatér a megadott elem indexével int lastindexof(object element): visszatér az utolsó elemmel, ami egyenlő vele void set(int index, Object element): átállítja az adott indexű elemet a megadottra

Map Kulcs-érték párokat tartalmazó adatszerkezet Minden kulcshoz egy érték tartozhat Nem iterálható, azonban lekérdezhető a keyset() és az values(), ami már igen HashMap, Hashtable ConcurrentMap, SortedMap Hashtable Szükséges hozzá az objektumon az equals() metódusok felüldefiniálása. Hiszen a kulcsot elhasj-eli, és az alapján tárolja el Konstruktora lehet üres, de megadható maximális kapacitása is. V put(k key, V value): beszúrja a megadott kulccsal a megadott értéket void putall(map<? extends K,? extends V> m): beszúr egy map típusú adatszerkezetet V remove(object key): törli a megadott elemet V get(objetc key): visszatér az adott kulcsú elemmel, ha nincs ilyen, akkor null-lal Set<K> keyset(): visszatér a kulcsok halmazával Enumeration<K> keys(): visszatér a kulcsok enumerációjával Collection<V> values(): visszatér az értékekkel Enumeration<V> elements():visszatér az értékek enumerációjával boolean contains(object element): szerepel-e a megadott elem az értékek között boolean containskey(object key): szerepel-e a megadott kulcs a kulcsok között boolean containsvalue(object element): szerepel-e a megadott elem az értékek között void clear(): kitörli a tartalmát boolean isempty(): megmondja, hogy üres-e int size(): megadja az elemek számát HashMap Szükséges hozzá az adott típusú objektumon az equals() metódusok felüldefiniálása. Konstruktora lehet üres, de megadható maximális kapacitása is. V put(k key, V value): beszúrja a megadott kulccsal a megadott értéket void putall(map<? extends K,? extends V> m): beszúr egy map típusú adatszerkezetet V remove(object key): törli a megadott elemet V get(objetc key): visszatér az adott kulcsú elemmel, ha nincs ilyen, akkor null-lal Set<K> keyset(): visszatér a kulcsok halmazával Collection<V> values(): visszatér az értékekkel boolean containskey(object key): szerepel-e a megadott kulcs a kulcsok között boolean containsvalue(object element): szerepel-e a megadott elem az értékek között void clear(): kitörli a tartalmát boolean isempty(): megmondja, hogy üres-e int size(): megadja az elemek számát

Kényelmi lehetőségek java.util.arrays o aslist(object[] t): tömbből listát készít o sort(object[] t): összefésüléses rendezés (feljavított), sok túlterhelés java.util.collections o Set singleton(object o): egyelemű, módosíthatatlan halmaz o List singletonlist(object o): egyelemű, módosíthatatlan lista o Map singletonmap(object o): egyelemű, módosíthatatlan map o copy(list dest, List src): másolás o Object min(collection coll): megadja a minimális elemet o Object min(collection coll, Comparator c): megadja a minimális elemet o Object max(collection coll): megadja a maximális elemet o Object max(collection coll, Comparator c): megadja a maximális elemet o void reverse(list l): megfordítja a listát o void shuffle(list l): megkeveri a lista elemeit o void swap(list l, int i, int j): megcseréli a két elemet o void sort(list l): rendezi a listát (az Arrays.sort függvényt hívja meg + konvertál) Megjegyzések Az interfész műveleteken kívül rengeteg egyéb hasznos funkcionalitással rendelkezik, érdemes a javadocot olvasgatni Saját implementációk!!! A Collections Framework absztrakt osztályokat biztosít (AbstractList, AbstractSet, ), amikből lehet származtatni. További adatszerkezetek: Dequeue, Stack, BitSet, Célszerű minél általánosabb interfészt megadni List<Integer> v2 = new LinkedList<Integer>(); // listakent kezelés Részletesen: http://java.sun.com/javase/6/docs/api/java/util/package-summary.html

Feladatok 1. Készítsetek egy generikus függvényt, ami a paramétereiben kapott 2 halmaz metszetét adja vissza. Valósítsátok meg hasonlóan az unió műveletet is. 2. Készíts egy programot, amely megszámolja egy fájlban az egyes szavak előfordulásainak számát! A program a fájl elérési útját argumentumként kapja meg. A megvalósításhoz használj egy String! Integer leképezést (Hashtable<String, Integer>)! 3. Készítsetek egy Date osztályt, amely tartalmazza az év, hónap, nap adatokat (mind számok). Implementáljátok vele a Comparable<Date> interfészt, és ennek megfelelően valósítsátok meg a compareto() függvényt! Teszteléshez hozzatok létre kódból 3 Date típusú objektumot és tároljátok el egy tetszőleges lista adatszerkezetben. Majd rendezzétek kronológiai sorrend szerint és írjátok ki az eredményt a képernyőre. 4. Készíts menüt az előző feladathoz! Menü: Új dátum felvétele Dátumlista betöltése Dátumlista mentése (ezt tudjuk be tölteni is) Dátumok listázása időrendben a képernyőre Kilépés 5. Készítsünk egy sorozat rendező alkalmazást! Készítsünk egy Series osztályt, ami tartalmazza a sorozat címét, az évadok számát, a részek számát, továbbá Episode típusú objektumokat, amik egy-egy részt reprezentálnak (a fájl 1 sora). Implementáljuk az Episode osztályban a Comparable<Episode> interfészt! A compareto() működjön úgy, hogy elsődleges szempont szerint az évad, azon belül pedig az epizódszám alapján rendezzen! Mindkét osztályban implementáljuk az equals, tostring és a hashcode függvényeket is! A tesztelő osztály egy menüvel induljon. Menü: Új sorozat (elég csak a név megadása) Új epizód felvétele (évad, epizódszám, cím) Sorozat megjelenítése (epizódok rendezetten) Sorozat betöltése Sorozat mentése (ezt tudjuk betölteni is) Kilépés Megjelenítéskor lehessen kiválasztani egy sorozatot és annak a részeit listázza ki időrendben (évaddal, epizódszámmal és címmel). Epizód felvételénél pedig egy kiválasztott sorozathoz lehessen felvenni új részt, évad, epizódszám és cím megadásával.

Mentéskor mindent mentsünk le (figyeljünk arra, ha több sorozatot kell elmenteni). A fájl a következő formátumú legyen (egy sorozat esetén): South park 12:7:Super Fun Time 12:4:Canada on Strike 8:13:Cartman's Incredible Gift 10:8:Make Love, Not Warcraft Első sor a sorozat címe, aztán a többi sor szerkezete: évad, epizódszám, epizódcím.