Kolekcija (programiranje)
U informatici, kolekcija je klasa, struktura podataka,[1][2] ili apstraktni tip podataka (ADT) čije su instance kolekcije drugih objekata. Drugim rečima, oni čuvaju objekte na oragnizovan način koji prati specifična pristupna pravila. Veličina kolekcije zavisi od broja objekata (elementa) koje sadrži. Osnovna primena različitih tipova kolekcija može varirati u kompleksnoti prostora i vremena, koja pruža fleksiblinost pri biranju tačne implementacije za dati scenario.
Pregled[uredi | uredi izvor]
Na kolekcije se može gledati na tri načina:
- pristup, to je način pristupu objekta kolekcije. U slučaju nizova, pristip se izvršava sa indeksom niza. U slučaju stekova, pristup se izvršava prema LIFO(poslednji unutra, prvi spolja) redosledu (alternativno ime: FILO, prvi unutra, poslednji spolja)[3] i u slučaju redova izvršava se prema FIFO(prvi unutra, prvi spolja) redosledu (alternativno ime: LILO, poslednji unutra, poslednji spolja);[3]FIFO(investopedia.com)</ref>[4]
- skladištenje, način skladištenja objekata kolekcije,
- prelaženje, to je način prelaženja objekata kolekcije.
Za kolekcije klasa se očekuje da implementuju metode da rade sledeće:
- napraviti praznu kolekciju;
- ubaciti objekte u kolekciju;
- izbrisati objekte iz kolekcije;
- izbrisati sve objekte u kolekciji (očisti);
- pristupiti objektima u kolekciji;
- pristupiti određenom broju objekata u kolekciji (veličina).
Kolekcije su ponekad implementovane u konjukciju preko iteratora.
Kolekcije bazirane na referencama i vrednostima[uredi | uredi izvor]
Kolekcije se mogu podeliti u dve grupe:
- kolekcije bazirane na vrednostima;
- kolekcije bazirane na referencama.
Kolekcije bazirane na vrednostima[uredi | uredi izvor]
Kolekcije bazirane na vrednostima čuvaju kopije objekata. Kada se pristupi objektu, objekat vraća kopiju njega. Ako se spoljni objekat promenjen posle njegovog ubacivanja u kolekciju, ne utiče na sadržaj kolekcije.
Kolekcije bazirane na referencama[uredi | uredi izvor]
Kolekcije bazirane na referencama čuvaju pokazivače ili reference za objekte. Kada se pristupi objektu, objekat vraća referencu. Ako je spoljni objekat promenjen posle njegovog ubacivanja u kolekciju, utiče na sadržaj kolekcije.
Slobodna vrednosti i asocijativne kolekcije[uredi | uredi izvor]
Kolekcije se mogu podeliti u dve grupe:
- kolekcije slobodne vrednosti;
- asocijativne kolekcije.
Kolekcije slobodne vrednosti[uredi | uredi izvor]
Svaki objekat je sačuvan nezavisno u kolekciji i pristupa mu se direktno ili sa iteratorom.
Asocijativne kolekcije[uredi | uredi izvor]
Asocijativni niz, mapa, ili rečnik je kolekcija koja se sastoji iz (ključ, vrednost) parova, takvih da svaki ključ se pojavljuje najviše jednom u kolekciji. Ključ služi da se pronađe vrednost, objekta, ako je sačuvan u kolekciji.
Primeri kolekcija[uredi | uredi izvor]
Kolekcije su podeljene u Standardnoj biblioteci šablona u asocijativne kolekcije i standardne kolekcije sekvenci. Osim ova dva tipa, postoje adapteri kolekcija. Strukturni podaci koji su implementovani preko kolekcija sadrže nizove, liste, mape, redove, skupove, stekove, tabele, stabla i vektore.
Grafičke kolekcije[uredi | uredi izvor]
Pomoćni alati vidžeta koriste specijalne vidžete koji se nazivaju Kolekcije za grupisanje drugih vidžeta (prozora, panela,...). Osim grafičkih osobina, imaju isti tip ponašanja kao kolekcije klasa, pošto čuvaju listu dečijih vidžeta, i dozvoljavaju dodavanje, uklanjanje, ili povratak vidžeta među njihovom decom.
Implementacije[uredi | uredi izvor]
- .NET: System.Collections (MSDN)
- ActionScript3: AS3Commons Collections Framework
- C++: C++ Standard Library (SC++L) or the obsolete Standard Template Library (STL)
- Java: Java collections framework (JCF)
- Objective-C: part of the Foundation Kit
- PL/SQL Collections[5]
- Python: has built in containers list, dict, tuple & set and can be further extended by the collections module
- Scala Mutable and Immutable Collections in the packages
scala.collection.mutable
andscala.collection.immutable
Vidi još[uredi | uredi izvor]
- Lista struktura podataka
- Standardna biblioteka šablona
- Kolekcija (apstraktni tip podataka)
- Stek (apstraktni tip podataka)
Reference[uredi | uredi izvor]
- ^ Paul E. Black (ed.), entry for data structure in Dictionary of Algorithms and Data Structures.
- ^ Entry data structure in the Encyclopædia Britannica (2009) Online entry Accessed on Oct 04, 2011.
- ^ a b LIFO(investopedia.com)
- ^ „FIFO(businessdictionary.com)”. Arhivirano iz originala 27. 08. 2016. g. Pristupljeno 19. 11. 2015.
- ^ "PL/SQL Collections and Records".
Spoljašnje veze[uredi | uredi izvor]
- Container Data Structure Declaration and Initialization
- Container data structures
- Python SortedContainers module A fast implementation of sorted list, sorted dict, and sorted set data types in Python.