Javin podsistem za rad sa kolekcijama standardizuje nacin na koji programi rade sa grupom objekata, sto znaci da su kolekcije strukture podataka u kojima se cuvaju srodni objekti, ne vrednosti. Kolekcije mogu skladistiti samo reference, ne mogu skladistiti vrednosti primitivnih tipova (da bi to bilo moguce potrebno ih je smestiti u omotacku wrapper klasu).
Interfejs Collection se nalazi na vrhu piramide Collections Framework posto ga mora implementirati svaka klasa koja definise kolekciju. On nasledjuje interfejs Iterable sto znaci da se elementima svake kolekcije moze pristupiti pomocu for-each petlje. Definise osnovne metode koje ce imati svaka kolekcija.
Interfejs List
List prosiruje interfejs Collection, elementi se u listu mogu umetati ili dodavati, može im se pristupiti preko njihovog mesta na listi, vrednost indeksa počinje od nule. Lista može da sadrži duplirane elemente.
Pored metoda definisanih u Colllections interfejsu, List definiše sopstvene metode ali i menja semantiku postojećim metodama iz Collection:
add() - umeće objekat na zadato mesto
get() - vraća objekat sa zadatog mesta
indexOf() - vraća indeks prve instance objekta na listi, ukoliko traženi element ne postoji vraća vrednost -1
listIterator() - vraća iterator na početak pozivajuće liste
remove() - uklanja sa liste element sa položaja index
set() - dodaje objekat na položaj index
Klase za rad sa kolekcijama
klasa ArrayList
Interfejs List implementira i proširuje klasa ArrayList, ona podržava dinamičke nizove koji po potrebi mogu da rastu, tj ova klasa predstavlja niz promenljive dužine koji sadrži reference na objekte.
Detaljnije o tome šta sve ova klasa može pogledati u komentarima ArrayListDemo
klasa LinkedList
Ona pored interfejsa List, implementira i interfejse Deque i Queue što omogućava izradu povezane liste. To znači da je LinkedLista u osnovi niz parova (element, pokazivač) pri čemu pokazivač sadrži adresu narednog para.
Detaljnije o tome šta sve ova klasa može pogledati u komentarima LinkedListDemo
klasa Vector
Ova klasa je starija od Collections Frameworka, kasnije će njegovim uvođenjem i klasa Vector da se preradi kako bi bila u potpunosti kompatibilna sa kolekcijama (nasleđuje interfejse Iterable i List) - odatle potiče mala razlika u definisanim metodama u odnosu na ostale klase koje implementiraju List. Ona ima nekoliko konstruktora, koji će uvek da zadaju određeni početni kapacitet niza. Pa tako konstruktor:
Vector() - pravi podrazumevani vektor početne veličine 10.
Vector(int veličina) - pravi vektor sa zadatim početnim kapacitetom.
Vector(int veličina, int priraštaj) - zadaje se početni kapacitet, koji se povećava u koracima koju su zadati parametrom priraštaj
Vector definiše i zaštićene promenljive:
int elementCount - broj elemenata vektora
int capacityIncrement - vrednost priraštaja
int Object[] elementData - niz koji sadrži elemente vektora
Detaljnije o tome šta sve ova klasa može pogledati u komentarima VectorDemo
Mapa predstavlja objekat u kome se čuvaju parovi ključ/vrednost. Kada imamo ključ, pomoću mape možemo da saznamo vrednost koja mu odgovara. I ključ i vrednost su objekti. Ključ mora da bude jedinstven, ali se vrednosti mogu ponavljati.
Rad sa mapama se svodi na dve glavne metode: get(Object ključ) - vraća vrednost koja odgovara ključu zadatom u parametru, ako ga ne pronađe vraća null put(K ključ, V vrednost) - unosi novu stavku u mapu, pri čemu nova vrednost zamenjuje staru koja odgovara postojećem ključu. Ako zadati ključ ne postoji, metoda vraća null. Ako ključ postoji, vraća prethodnu vrednost koja je sa njim povezana.
Klase za rad sa mapama
Klasa HashMap
ona podatke čuva u hash tabeli, zbog toga je vreme izvršavanja metoda isto bez obzira na veličinu mape. Takođe heš-mapa ne garantuje određeni redosled učitavanja, tj redosled kojim su elementi dodavani u mapu ne moraju da se poklapaju sa redosledom kojim će ih iterator čitati.
Mapa predstavlja objekat u kome se čuvaju parovi ključ/vrednost. Kada imamo ključ, pomoću mape možemo da saznamo vrednost koja mu odgovara. I ključ i vrednost su objekti. Ključ mora da bude jedinstven, ali se vrednosti mogu ponavljati.
Detaljnije o tome šta sve ova klasa može pogledati u komentarima HashMapDemo.
TreeMap
TreeMap za smestanje podataka koristi hijerarhijsko stablo, elementi su razvrstani u obliku stabla prema rastucem redosledu kljuceva bez obzira kojom redosledom smo ih unosili.
Detaljnije o tome šta sve ova klasa može pogledati u komentarima TreeMapDemo.
Regularni izraz je grupa znakova koja opisuje odredjenu znakovnu sekvencu, on se jos zove sablon ili uzorak (pattern) i moze se iskoristiti za pronalazenje datog sablona u drugim znakovnim sekvencama. Regularni izrazi mogu da sadrze dzokerske znake, skupove znakova i razne kvantifikatore. Postoje dve klase koje podrzavaju obradu regularnih izraza: Pattern i Matcher Klasa Pattern omogucava definisanje regularnog izraza ili sablona, a onda tako definisani sablon poredimo sa drugim sekvencama pomocu objekta tipa Matcher. Detaljnije o tome šta se sve može uraditi sa regularnim izrazima pogledati u komentarima RegularniIzrazi