Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 1 20.Klasszikus adatszerkezetek 21.Kollekció keretrendszer.

Hasonló előadás


Az előadások a következő témára: "Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 1 20.Klasszikus adatszerkezetek 21.Kollekció keretrendszer."— Előadás másolata:

1 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 1 20.Klasszikus adatszerkezetek 21.Kollekció keretrendszer

2 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / Klasszikus adatszerkezetek 1.Az adatszerkezetek rendszerezése 2.Absztrakt tárolók 3.Tömb 4.Tábla 5.Verem 6.Sor 7.Fa 8.Irányított gráf, hálózat

3 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 3 Adatszerkezetek  Adatmodell, eljárásmodell  Adatszerkezet: egymással kapcsolatban álló adatok, objektumok összessége  Elemei: csomóponti adatok, kapcsolatok  Reprezentáció: gráffal csomóponti adatok: gráf csúcsai kapcsolatok: gráf élei  Műveletek Konstrukciós műveletek Szelekciós műveletek

4 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 4 Boldog Boglárka Fekete Farkas Madár Aladár Boldog Boglárka Fekete Farkas Madár Aladár Példa: Hallgató objektumok összekapcsolása

5 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 5 Adatszerkezetek rendszerezése az elemek közötti kapcsolatok alapján ADATSZERKEZETEK Asszociatív Szekvenciális Hierarchikus Hálós Tömb Tábla Verem Sor Fa Ir. gráf Hálózat

6 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 6 Asszociatív csoport Asszociatív adatszerkezet Szekvenciális adatszerkezet

7 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 7 Hierachikus adatszerkezet Hálós adatszerkezet

8 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 8 Absztrakt tárolók  Címezhető tárolókon absztrakt tárolási lehetőségek: Egydimenziós tömb Láncolt lista  Absztrakt tároló helye: bármilyen címezhető hardver elem (pl. memória, lemezes egység)  Az adatszerkezetek leképezhetők absztrakt tárolókra Egydimenziós tömb  A tárolt objektumok közvetlenül egymás után helyez- kednek el, ugyanolyan távolságra egymástól  Elemei indexeléssel közvetlenül címezhetők

9 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 9 Láncolt lista  Elemei mutatókon keresztül össze vannak kapcsolva  A listát az első listaelem mutatója (L) meghatározza  Egy listaelem: adat + mutató 123 n... L Adat MutatóVégjel Egyirányú nyíltvégű láncolt lista

10 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 10 Láncolt lista (folyt.)  Elemei fizikailag bárhol elhelyezkedhetnek  Előnye: beszúrás, törlés egyszerű  Változatai: Nyíltvégű lista Cirkuláris (zárt) lista Rendezett lista Kétirányú (szimmetrikus) lista Fejelt lista Multilista (többszörös lista)

11 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 11 Tömb  Asszociatív adatszerkezet  Fajtái: Általános tömb Ritka mátrix Általános tömb  Elemei indexeléssel közvetlenül elérhetők  Hátrányai méretét előre meg kell adni indexhatárok dimenziónként kötöttek  Tárolás: egydimenziós tömbben (az adatszerkezet általában maga a tároló)

12 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 12 Ritka mátrix  Olyan többdimenziós tömb, ahol a tömb nagy része kihasználatlan  Tárolás: láncolt listában

13 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 13 Tábla  Asszociatív adatszerkezet  Egy elem: egyedi kulcs + adat  Tárolás: egydimenziós tömbben vagy láncolt listában Kérem azt az adatot, melynek kulcsa...

14 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 14 Táblák osztályzása (tárolási mód alapján)  Soros tábla  Önátrendező tábla  Rendezett tábla  Hasító (kulcstranszformációs) tábla Hasítótábla (hash table)  Hasítófüggvény (kulcstranszformációs függvény): kulcs  elem fizikai címe  Hasonlítgatások száma minimális  Legjobb táblaszervezési mód: egyértelmű leképezés a kulcsok és a fizikai címek között  Szinonímák azonos címre leképezett kulcsok megvalósítás: láncolt listával

15 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 15 Hasítótábla egyértelmű leképezéssel Kulcs Hasítófüggvény Hasítótábla szinonímákkal Kulcs Hasító(Kulcs) Kulcs+Adat

16 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 16 Verem (stack)  Szekvenciális adatszerkezet  LIFO (Last In First Out) szerkezet  Műveletei: PUSH, POP, TOP PUSH POP Legfiatalabb Legidősebb

17 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 17 Verem (folyt.)  Tárolás: általában egydimenziós tömbben  Alkalmazásai: Elemek sorrendjének megfordítása Visszatérési utak megjegyzése Memóriaverem: metódusok hívásakor a visszatérési címek és lokális változók tárolása

18 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 18 Sor (queue)  Szekvenciális adatszerkezet  FIFO (First In First Out) adatszerkezet  Műveletei: PUT, GET, FIRST... Első Legidősebb GETPUT Utolsó Legfiatalabb

19 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 19 Sor (folyt.)  Tárolás: egydimenziós tömbben vagy láncolt listában Ciklikus tárolás egydimenziós tömbben:  Alkalmazása: elemek feldolgozása érkezési sorrendben Például: pufferek (billentyűzetpuffer, nyomtatópuffer) Első Max — —— Utolsó

20 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 20 Fa  Hierarchikus adatszerkezet  Elemei: csomópontok és egyirányú kapcsolatok  Rekurzív definíció, rekurzív algoritmusok ef a b g Gyökér Elágazás (3 fokú) Levél (0 fokú) 1. szint 3. szint Részfa c d 0. szint

21 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 21 Fával kapcsolatos fogalmak  Kezdőpont, végpont  Gyökér, elágazás, levél  Csomópont foka, fa foka  Szülő, gyerek  Szintszám  Fa magassága  Rendezett fa  Kiegyensúlyozott fa ef a b g c d

22 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 22 Fa bejárása  Gyökérkezdő (preorder) a b c d g e f  Gyökérvégző (postorder) b c a b d e f c a b g d e f c a ef a b g c d

23 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 23 Bináris fa Gyökeréből legfeljebb két részfa ágazik: baloldali és jobboldali részfa Bejárása  Gyökérkezdő (preorder) a b d c e g h i j f  Gyökérközepű (inorder) d b a g e i h j c f  Gyökérvégző (postorder) d b g i j h e f c a a d c b f e hg ji

24 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 24 Rendezett bináris fa  Keresési fa (kereső fa, rendező fa)  A baloldali részfa összes eleme kisebb, mint a szülő  A jobboldali részfa összes eleme nagyobb, mint a szülő  Egy n szintű fa elemeinek száma maximum 2n+1-1  Egy elemet maximum n+1 lépésben megtalálunk

25 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 25 Kiegyensúlyozott bináris fa Elemek beszúrási sorrendje: 8, 4, 12, 10, 9, 14, 2, 3, 6, 1, 15, 5, 7, 13,

26 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 26 Degenerált bináris fa Elemek beszúrási sorrendje: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,

27 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 27 Fa tárolása multilistában d a b c f e g

28 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 28 Hálós adatszerkezetek Irányított gráf Hálózat b e a c d 1 9 b d a c

29 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / Kollekció keretrendszer 1.A kollekció keretrendszer felépítése 2.A Collection interfész és leszármazottai 3.A HashSet osztály – hasítási technika 4.A TreeSet osztály – Comparator 5.Iterátor 6.A List interfész implementációi 7. A Map és a SortedMap interfész 8.A Hashtable osztály 9.A TreeMap osztály

30 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 30 Kollekció keretrendszer (Collections Framework)  Interfészeket és osztályokat definiál különböző konténerek hatékony létrehozása céljából  Elemei: Interfészek kollekció térkép iterátor Implementációk (osztályok) Algoritmusok ( Collections osztály)

31 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 31 Kollekció keretrendszer TreeSet «interfész» Collection «interfész» Set «interfész» SortedSet «interfész» List HashSet Vector ArrayList LinkedList Stack «interfész» Iterator «interfész» ListIterator Collections Interfészek Algoritmusok TreeMap «interfész» Map «interfész» SortedMap Hashtable HashMap Osztályok

32 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 32 A Collection interfész és leszármazottai TreeSet «interfész» Collection «interfész» Set «interfész» SortedSet HashSet «interfész» List Vector ArrayList LinkedList Stack

33 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 33 «interfész» Collection size(): int isEmpty(): boolean contains(elem: Object): boolean containsAll(c: Collection): boolean add(elem: Object): boolean addAll(c: Collection): boolean remove(elem: Object): boolean removeAll(c: Collection): boolean retainAll(c: Collection): boolean clear() equals(o: Object): boolean toArray():Object[] toArray(Object a[]):Object[] iterator(): Iterator Collection interfész (kollekció)  Objektumokat tárol  Van legalább két konstruktora: paraméter nélküli kollekcióval paraméterezett  Nincs példányosítható implementációja a keretrendszerben  Bejárás iterátorral

34 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 34 «interfész» Set «interfész» SortedSet first(): Object last(): Object comparator(): Comparator headSet(toElement: Object): SortedSet tailSet(fromElement: Object): SortedSet subSet(fromElement: Object, toElement: Object): SortedSet Set interfész (halmaz)  Elemei egyediek nem rendezettek  Implementációja: HashSet SortedSet interfész (rendezett halmaz)  Elemei egyediek rendezettek  Implementációja: TreeSet

35 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 35 «interfész» List get(index: int): Object set(index: int, elem: Object): Object add(index: int, elem: Object) addAll(index: int, c: Collection): boolean remove(index: int): Object indexOf(o: Object): int lastIndexOf(o: Object): int listIterator():ListIterator listIterator(index: int): ListIterator List interfész (lista)  Elemei nem egyediek egy meghatározott sorrendben követik egymást indexelhetők  Implementációi: ArrayList, Vector, LinkedList, Stack

36 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 36 A HashSet osztály – hasítási technika  Hasítókód (hashCode, hasítófüggvény)  Kapacitás: hasítással előállított csoportok száma  Hasítókód normalizálása: csoportindex = obj.hashCode() % kapacitás  Telítettség: elemszám / kapacitás  Telítettségi küszöb Character kar = new Character('H'); kar.hashCode() == 72 csoportindex == kar.hashCode()%10 == 2 Kapacitás: 10 Elemszám: 6 Telítettség: 0.6 Telítettségi küszöb: 0.9 Csoportindex atHe on "Hottentotta" karaktereinek hasítása

37 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 37 Hasítófüggvény készítésének szabályai  Egy objektumnak mindig ugyanazt a hasítókódot kell generálnia  o1.equals(o2)  hashCode(o1)==hashCode(o2)  Egyenletes eloszlásra törekvés  Hashset -be beteendő objektumok osztályában (szükség esetén) átírandó metódusok: hashCode equals

38 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 38 HashSet osztály  Halmaz ( Set interfész implementációja)  Megvalósítás: hasítási technikával (hasítótáblával)  Gyors műveletek, megjósolhatatlan bejárás  Alkalmazás Egyedi, rendezetlen elemeket tartalmazó kollekció Nagy elemszám esetén nagyon hatékony!  Konstruktorok, metódusok HashSet() HashSet(int initialCapacity) HashSet(int initialCapacity, float loadFactor) HashSet(Collection c) String toString()  [elem,elem,...]

39 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 39 Feladat – HashSetBetuk Kérjünk be konzolról egy karakterláncot! Írjuk ki a benne szereplő betűket ábécérendben (mindegyiket csak egy- szer)! HashSetBetuk betuk: HashSet :Character szoveg:String add() contains()? charAt() Együttműködési diagram

40 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 40 … public class HashSetBetuk { public static void main(String[] args) { HashSet betuk = new HashSet(); String szoveg = Console.readLine("Szöveg= "); for (int i=0; i

41 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 41 Feladat – HashTorpe Az emberre jellemző a neve és a magassága: e két adattal inicializáljuk őket. Tartsunk nyilván embereket, de két ugyanolyan nevű ember nem szerepelhet a nyil- vántartásban! Vegyük nyilvántartásba a hét törpét! Végül listázzuk ki a felvitt emberek adatait (név, magasság) egymás után!

42 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 42 A 26 felé hasított hét törpe HKMS TV Hapci 126 Tudor 146 Szundi 128 Vidor 104 Szende 112 Morgó 126 Kuka

43 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 43 … class Ember { private String nev; private int magassag; public Ember(String nev, int magassag) { this.nev = nev; this.magassag = magassag; } public String getNev() { return nev; } public int getMagassag() { return magassag; }

44 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 44 public int hashCode() { if (nev.length() == 0) return 0; return Character.toUpperCase(nev.charAt(0)); } public boolean equals(Object obj) { if ((obj != null) && (obj instanceof Ember)) return nev.equals(((Ember)obj).getNev()); return false; }

45 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 45 public String toString() { return Format.left(nev,10) + Format.right(magassag,3); } } // Ember public class HashTorpe { public static void main(String[] args) { HashSet torpek = new HashSet(26); torpek.add(new Ember("Morgó",112)); torpek.add(new Ember("Szende",104)); torpek.add(new Ember("Hapci",122));

46 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 46 torpek.add(new Ember("Kuka",126)); torpek.add(new Ember("Tudor",126)); torpek.add(new Ember("Szundi",146)); torpek.add(new Ember("Vidor",128)); torpek.add(new Ember("Hapci",100)); // Hatástalan torpek.add(new Ember("Tudor",128)); // Hatástalan System.out.println("Törpék száma: "+torpek.size()); System.out.println(torpek); } } // HashTorpe

47 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 47 A TreeSet osztály - Comparator  Rendezett halmaz ( SortedSet interfész impl.)  Megvalósítás: kiegyensúlyozott fával  Halmazba tett objektumok összehasonlíthatóak Két eset: Osztályuk implementálja a Comparable interfészt (természetes össszehasonlítás) TreeSet konstruktorában megadunk egy összehasonlító ( comparator ) objektumot  Alkalmazás Egyedi, rendezett elemeket tartalmazó kollekció Nagy elemszámnál a keresés nagyon hatékony!

48 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 48 Konstruktorok, metódusok TreeSet() TreeSet(Collection c) TreeSet(SortedSet s) TreeSet(Comparator comp) Comparator comparator() Comparator interfész  Céljai: más rendezettség megadása (a természetes rendezettségen túl) rendezettség megadása kívülről  Implementációjának példánya egy összehasonlító objektum, mely átadható a TreeSet konstruktorának  Metódusa public int compare(Object a, Object b)

49 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 49 Feladat – TreeSetNevek Tegyünk be keresztneveket egy konténerbe! Ne vigyünk be egyforma neveket! Írjuk ki a neveket először névsor szerint, azután névhosszúság szerinti rendezettségben! import java.util.*; public class TreeSetNevek { public static void main(String[] args) { TreeSet nevsor = new TreeSet(); nevsor.add("Soma"); nevsor.add("Jeremiás"); nevsor.add("Janka");

50 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 50 // Kiírás névsorban: System.out.println(nevsor); TreeSet nevek = new TreeSet(new Comparator() { public int compare(Object a, Object b) { return ((String)a).length() - ((String)b).length(); } } ); nevek.addAll(nevsor); System.out.println(nevek); }

51 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 51 Iterátor  Iterátor: objektum, mellyel egy kollekció bejárható  Egy kollekcióhoz több iterátor is kapcsolható  Az iterátor objektum felelős a kollekció helyes bejárásáért  Egy kollekció egy iterátorral csak egyszer járható be  Iterátor elkérése a coll kollekciótól: Iterator iter = coll.iterator();  Az iterátornak implementálnia kell az Iterator interfészt Iterator interfész boolean hasNext() Object next() void remove()

52 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 52 Példa: tetszőleges kollekció bejárása iterátorral Collection c = new...;... Iterator iter = c.iterator(); while (iter.hasNext()) { Object current = iter.next(); // (Objektum osztálya)current.üzenet; } c:HashSet iter hasNext() next() remove() iterator()

53 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 53 Feladat – Országok Tegyünk be országokat egy HashSet kollekcióba! Listázzuk ki őket először a HashSet -be beépített módon, majd egy iterátorobjektum segítségével! import java.util.*; public class Orszagok { public static void main(String[] args) { String[] nevek = {"USA","Lengyelország","Nepál", "Magyarország","Kuba"};

54 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 54 HashSet orszagok = new HashSet(); for (int i = 0; i < nevek.length; i++) orszagok.add(nevek[i]); System.out.println(orszagok); System.out.println("Országok:"); Iterator iter = orszagok.iterator(); while (iter.hasNext()) System.out.println(iter.next()); }

55 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 55 A List interfész implementációi «interfész» List Vector ArrayList LinkedList Stack «interfész» Iterator «interfész» ListIterator

56 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 56 ArrayList  Megvalósítás: újraméretezhető tömbbel Vector  Megvalósítás: újraméretezhető tömbbel  Metódusai szinkronizáltak LinkedList  Megvalósítás: kétirányú láncolt listával Stack  Speciális vektor  Verem adatszerkezetet valósítja meg

57 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 57 ListIterator interfész  Iterator interfész leszármazottja  Segítségével a kollekció mindkét irányban bejárható  Listaiterátor elkérése a lista listától: ListIterator iter = lista.listIterator();  Metódusok boolean hasNext() boolean hasPrevious() Object next() int nextIndex() Object previous() int previousIndex() void add(Object obj) void remove()

58 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 58 Feladat – LinkedListTest Vigyünk fel szövegeket egy láncolt listába! Ezután listázzuk ki a szövegeket  a felvitel sorrendjében!  visszafelé, s közben töröljük ki az A betűvel kezdődő szövegeket!  s megint elölről! Végül írjuk ki az utolsó szöveget! public class LinkedListTest { public static void main(String[] args) { LinkedList lista = new LinkedList(); lista.add("Gergő"); lista.add("Anna"); lista.add("Matyi");

59 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 59 System.out.println("Listázás előre:"); ListIterator iter = lista.listIterator(); while (iter.hasNext()) System.out.println(iter.next()); System.out.println("\nListázás visszafelé, közben az "+ "A betűsök törlése:"); while (iter.hasPrevious()) { String str = (String)iter.previous(); System.out.println(str); if (str.startsWith("A")) iter.remove(); }

60 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 60 System.out.println("\nListázás előre: "); iter = lista.listIterator(); while (iter.hasNext()) { System.out.println(iter.next()); } System.out.println("\nUtolsó elem: " + lista.get(lista.size()-1)); } // main }

61 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 61 A Map és a SortedMap interfész Térkép Kulcs-érték párokat tárol «interfész» Map size(): int isEmpty(): boolean remove(key: Object) clear() get(key: Object): Object put(key: Object, value: Object): Object putAll(entries: Map) containsKey(key: Object): boolean containsValue(value: Object): boolean keySet(): Set values(): Collection «interfész» SortedMap comparator():Comparator firstKey(): Object lastKey(): Object TreeMap HashMap Hashtable

62 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 62 A Hashtable osztály  Map interfész implementációja  Rendezetlen térkép, mely kulcs-érték párokat tárol  Megvalósítás: hasítási technikával (hasítótáblával)  Konstruktorok Hashtable() Hashtable(Map entries) Hashtable(int initialCapacity) Hashtable(int initialCapacity, float loadFactor)

63 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 63 Feladat – HashtableAuto Vigyünk fel autók adatait! A rendszámot és a hozzá tartozó autómárkát egy-egy szövegben tároljuk. A rendszám egyedi adat. Ezután  Írjuk ki az autók adatait a Hashtable.toString által felkínált formában!  Írjuk ki külön a kulcsokat, majd külön az értékeket (autómárkákat)!  Keressük meg a megadott rendszámú autót! Írjuk ki az autó márkáját.  Cseréljünk ki egy megadott rendszámú autó márkáját!  Írjuk ki egyenként, sorszámozva az autók adatait!

64 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 64 import java.util.*; public class HashtableAuto { public static void main(String[] args) { Hashtable autok = new Hashtable(); autok.put("BIT-442", "Piros Romeo"); autok.put("SIT-999", "Fehér Merci"); autok.put("CAR-152", "Zöld Mazda"); // A tejles térkép összes bejegyzésének kiírása: System.out.println(autok);

65 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 65 // Kulcsok, értékek kiírása: System.out.println("Kulcsok: "+autok.keySet()); System.out.println("Értékek: "+autok.values()); // Adott kulcsú bejegyzés keresése: String rendszam = "CAR-152"; if (autok.containsKey(rendszam)) System.out.println(rendszam+" megvan, "+ autok.get(rendszam)); // Csere: autok.put(rendszam, "Fekete Trabant");

66 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 66 // Kiírás iterátorral: Iterator iter = autok.keySet().iterator(); int n = 0; while (iter.hasNext()) { Object key = iter.next(); System.out.println(++n + ". " + autok.get(key)); }

67 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 67 A TreeMap osztály  SortedMap interfész implementációja  Rendezett kulcsokat tartalmazó térkép  Megvalósítás: kiegyensúlyozott fával (a kulcsok összehasonlíthatók)  Konstruktorok TreeMap() TreeMap(Comparator c) TreeMap(Map m) TreeMap(SortedMap m)

68 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 68 Feladat – TreeMapUser Egy internetszolgáltató tárolni akarja a felhasználók adatait: a felhasználó nevét, jelszavát és a legutóbbi látogatásának időpontját. A használati esetek a következők:  Új felhasználó felvitele  Felhasználók számának kiírása  Felhasználónevek listázása ábécé szerint  A jelszó és a legutóbbi látogatás kiírása a felhasználónév alapján A használati eseteket hajtsuk végre egymás után!

69 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 69 import java.util.*; import java.text.DateFormat; class User { private String userName; // felhasználónév private String password; // jelszó private Date lastVisited; // a legutóbbi belépés időpontja public User(String userName, String password) { this.userName = userName; this.password = password; this.lastVisited = new Date(); // mai dátum }

70 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 70 public User(String userName) { this(userName,""); } public String getUserName(){ return userName; } public String getPassword(){ return password; } public String getLastVisited() { return DateFormat.getDateTimeInstance(). format(lastVisited); }

71 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 71 public void setLastVisited() { lastVisited = new Date(); } public String toString() { return userName+", "+password+", "+getLastVisited(); } } // class User

72 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 72 public class TreeMapUser { public static void main(String[] args) { TreeMap users = new TreeMap(); users.put("Nagybuta", new User("NagyButa", "netuddmeg")); users.put("Bendegúz", new User("Bendegúz", "anyukád")); users.put("Erzsébet", new User("Erzsébet", "kimást")); users.put("Naspolya", new User("Naspolya", "eddmeg"));

73 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 73 System.out.println("Felhasználók száma: " +users.size()); // Felhasználónevek listázása: System.out.println("\nFelhasználónevek:"); Iterator iter = users.keySet().iterator(); while (iter.hasNext()) System.out.println(iter.next()); // Felhasználók adatai: System.out.println("\nFelhasználók adatai:"); Collection values = users.values(); iter = values.iterator(); while (iter.hasNext()) System.out.println(iter.next());

74 Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 74 // Megadott felhasználó jelszavának kiírása: String userName = "Bendegúz"; User user = (User)users.get(userName); if (user == null) System.out.println("\nNincs " + userName); else { System.out.println("\n" + userName + " jelszava: " + user.getPassword() + ", legutóbbi látogatása: " + user.getLastVisited()); }


Letölteni ppt "Gábor Dénes Főiskola (IAI)Programozási technológia (Java) - V. / 1 20.Klasszikus adatszerkezetek 21.Kollekció keretrendszer."

Hasonló előadás


Google Hirdetések