Gyakorlati alapok III.
Java Kollekció Keretrendszer (JCF)
A kollekció meghatározásakor
érdemes az
Az
adatszerkezetek I. című fejezet bevezető gondolatát felidéznünk:
Adatszerkezet alatt egymással kapcsolatban álló adatok, objektumok összességét értjük.
Megállapítottuk, hogy nem minden adathalmaz alkot adatszerkezetet (legalábbis
a köztük lévő "kvázikapcsolatra" senki nem kíváncsi), tehát a kapcsolódás
logikáját mindenképpen az adatfelhasználó, az adatrendszerező vagy éppen a
körülmények alkotják meg (példaként vettük a bűnügyi helyszín tárgyait).
Itt jegyezzük meg napjaink egyik érdekes, a fentiektől már különböző üzleti
modelljét, a Big Data adatstruktúrát.
Forrás - Source: www.eweek.com
Ennek során az ingyenesen vagy
egyéb praktikákkal megszerzett digitális felhasználói információk szűretlenül,
ömlesztve kerülnek tárolásra, amelyet később a cég üzleti célból, legtöbbször
már többszörös átszűrésekkel kínál eladásra. Természetesen –mint majdnem
minden alapvető digitális technológiának-, ennek is katonai előzményei voltak.
Az adatok jellegük szerint sokféleképpen tudnak egymáshoz kapcsolódni. Először
is, kissé leegyszerűsítve, de bátran kijelenthetjük, hogy minél nagyobb
adatmennyiséggel dolgozunk, annál inkább számít az adatokat rendszerező
alaplogika és szerkezet optimális kiválasztása, valamint a rajta dolgozó
algoritmusok. Sőt, ha rossz a rendszerező alaplogika, némelykor már kis
adatmennyiség esetén is megérezhetjük hatásait. Gondoljunk csak arra, hogy egy
könyvtár...
...rendszerezési alapfeltételeit
nem a könyvek írói és címeik, hanem mondjuk könyvszínek vagy méretük szerint
határozzuk meg. Gondoljunk arra, ha a könyveket mégiscsak az optimális logika,
azaz szerző és cím szerint tároljuk, de nem vesszük figyelembe, hogy a
könyvtárban 1 könyvnek lehet több példánya is. Ekkor már nem tudjuk kezelni a
redundáns kéréseket (amikor 1 példány már kint van kölcsönzésben és a többit
vinnék el), valamint nem ismerjük a könyvtár aktuális könyvtárolási
paramétereit sem, azaz, hogy éppen mennyi könyv van kint és bent, bár ez adott
keretek között elhanyagolható információnak tűnik egészen addig, amíg egy
intézmény nem ajándékoz a könyvtárnak egy könyvből mondjuk 5000 példányt,
amely meg fogja tölteni a fél könyvtárat. A rosszul megalkotott rendszer
pontosan ebben a pillanatban fog összedőlni.
Másrészről az
Az
adatszerkezetek című fejezetcsomag alapján azt is könnyű belátnunk, hogy
léteznek egymástól gyökeresen eltérő adatszerkezetek, ezért sok esetben
létkérdés az optimális adatszerkezet kiválasztása. Erre is nézzünk néhány
jellemző példát:
-
nyilvánvalóan másképpen kell tárolnunk egy útvonalterv és egy osztály tanulóinak digitális adatait,
-
egészen más adatstruktúrákat igényel egy könyvtári és egy vállalati adatrendszer, amely utóbbi egyébként is további alrendszerekre bontható.
A Java Kollekció Keretrendszer (Java Collections Framework – JCF) átveszi tőlünk az ügy oroszlánrészét: előre megírt, kiváló minőségű kódokkal segít minket abban, hogy ha sikeresen kiválasztottuk az általunk optimálisnak ítélt adatszerkezetet, akkor azt gyorsan létrehozhassuk és céljaink érdekében tetszőlegesen manipulálhassuk. Ehhez a JCF a következő komponenseket tartalmazza:
-
interfészek – amint azt már megtanultuk, az interfész kötelezően kidolgozandó metódusfej, ebben a vonatkozásban pedig az adattípusok “elvi szintű” absztrakciói, az adattípus lehető legáltalánosabb megfogalmazása,
-
interfész-implementációk – az adattípust reprezentáló interfész konkrét kidolgozásai,
-
algoritmusok – az adatszerkezeten elvégezhető konkrét műveletek (keresés, rendezés, stb.).
A JCF előnyei:
-
mivel a struktúrák nagyon jó minőségben és előre megírtak, az implementáció, gyors, pontos és hatékony lesz,
-
a JCF kiválóan illeszthető a már meglévő kódokhoz, azaz kompatibilis része a Java-rendszernek, így a keletkezett kódok teljesen vagy kis változtatásokkal újrahasználhatók,
-
a JCF alap logikai és nyelvi struktúrája hasonlít a Java-rendszeréhez (holisztikus jellemző: a rész az egészt tükrözni). Ebből következően a JCF elsajátítása komoly felismeréseket eredményezhet a tágabb Java-rendszer megismerésében is.