Informatika4-2018/Gyakorlat9
A MathWikiből
A lap korábbi változatát látod, amilyen Gaebor (vitalap | szerkesztései) 2018. november 20., 10:52-kor történt szerkesztése után volt.
Tartalomjegyzék |
Generics
C++ template megfelelője.
Tetszőleges metódust vagy osztályt megírhatunk úgy, hogy működjön több osztályra is. Például:
public class Main { public static <T> boolean IsIn(T[] a, T v) { for( int i = 0; i < a.length; ++i) { if (a[i].equals(v)) return true; } return false; } }
Wildcards
Collections
Kollekciókban lehet objektumokat tárolni.
List
Sorrendet őrző kollekció. Lehet beszúrni, kitörölni elemet, tetszőleges pozícióban. Le lehet kérdezni az adott pozícióban lévő elemet.
ArrayList
A List-nek olyan megvalósítása, ahol az elemek egy összefüggő memóriatartományban (tömb) helyezkednek el.
- Időben konstans költsége van egy elem elérésének
- Időben lineáris egy elem beszúrása vagy törlése, mert az összes többi elemet is mozgatni kell hozzá.
|a|b|c|d|e|f|g| -> |a|b|x|c|d|e|f|g| ^ x
LinkedList
Láncolt lista, az elemek helye nem rögzített a mamóriában, de mindegyik eltárol egy-egy referenciát ez előtte és a mögötte álló elemre, így őrzi a sorrendet.
+-+ -> +-+ -> +-+ -> +-+ -> |a| |b| |c| |d| <- +-+ <- +-+ <- +-+ <- +-+
- Egy adott pozíció elérése időben lineáris, mert az elejétől lépkedve lehet eljutni minden elemhez.
Set
HashSet
SortedSet
Map
SortedMap
Feladat
Implementáljunk egy gráf osztályt.