Java collections framework
![]() | Један корисник управо ради на овом чланку. Молимо остале кориснике да му допусте да заврши са радом. Ако имате коментаре и питања у вези са чланком, користите страницу за разговор.
Хвала на стрпљењу. Када радови буду завршени, овај шаблон ће бити уклоњен. Напомене
|
Овај чланак је део пројекта семинарских радова на Математичком факултету у Београду. Датум уноса: април—мај 2015. Ова група студената уређиваће у простору чланака. Немојте пребацивати чланак у друге именске просторе. Позивамо вас да допринесете његовом квалитету и помогнете студентима при уређивању. |
Java collections framework - JCF je skup klasa i interfejsova koji implementiraju često upotrebljivane kolekcije struktura podataka.[1]
Istorija
Implementacije kolekcija u verzijama Jave pre JDK 1.2 su sadržavale nekolicinu klasa struktura podataka, ali ne i .[2] Standardni načini za grupisanje Java objekata su bili pomoću nizova, Vector
i Hashtable
klasa, koje nije bilo lako proširiti.[3]
S obzirom na potrebu za dinamičnijim kolekcijama struktura podataka, razvijene su mnoge nezavisne biblioteke,[2] od kojih su najkorišćenije bile Dag Lijev (Doug Lea) Paket kolekcija (Collections package),[4] i ObjectSpace Generic Collection Library (JGL),[5] čija je svrha bila konzistentnost sa C++ Standard Template Library (STL).[6]
JCF je razvijen i dizajniran uglavnom od strane Džoš Bloka, i pojavio se u JDK 1.2. Koristi mnoge ideje i klase i Dag Lijevog Paketa kolekcija, koji tada biva prevaziđen..[4] Sun chose not to use the ideas of JGL, because they wanted a compact framework, and consistency with C++ was not one of their goals.[7]
Arhitektura
Skoro sve kolekcije nasle]uju od java.util.Collection
interfejsa, koji definiše osnovne delove svake kolekcije. Interfejs uvodi add() i remove() metode za dodavanje i izbacivanje iz kolekcije. Neophodni su i toArray() metod, koji prevodi kolekciju u niz koji sadrži sve članove kolekcije, i contains() metod koji proverava da li kolekcija sadrži neki konkretan element. Ovaj interfejs nasleđuje od java.lang.Iterable
interfejsa, čime se omogućuje obrada kolekcija pomoću for-each izraza. Sve kolekcije imaju iterator koji prolazi kroz sve elemente u kolekciji. Takodje, Collection je generički interfejs - svaka kolekcija može da bude napisana tako da može da skladišti bilo koju klasu.[8]
List interfejs
Liste su implementirane pomoću java.util.List
interfejsa. Definiše listu koja je suštinski felksibilnija verzija niza. Elementi su uređeni u specifičnom redosledu i dozvoljeni su duplikati. Elementi se mogu umetnuti na specifičnu poziciju i moguća je pretraga. Implementirane su u klasama java.util.ArrayList
i java.util.LinkedList
. ArrayList implementira listu kao niz. Kada se koriste funkcije specifične za liste, klasa pomera elemente unutar niza. LinkedList skladišti elemente u čvorovima koji imaju pokazivače na prethodni i naredni element liste.[9]
Stack klasa
Stek se implementira pomoću java.util.Stack
. Stack klasa predstavlja last-in-first-out (LIFO) gomilu objekata koja proširuje Vector klasu sa pet operacija koje omogućavaju vektoru da bude tretiran kao stek. Snabdeveni su uobičajeni push i pop metodi, ali i metod za gledanje sadržaja na vrhu steka, metod koji proverava da li je stek prazan i metod koji pretražuje stek i otkriva koliko je traženi objekat daleko od vrha. Stek se kreira prazan.
Queue interfejs
Red sa dva kraja
Mapa
Skup
Proširenja za JCF
Reference
- ^ „Lesson: Introduction to Collections”. Oracle Corporation. Приступљено 2010-12-22.
- ^ а б „Java Collections Framework” (PDF). IBM. Приступљено 2011-01-01.
- ^ „Get started with the Java Collections Framework”. JavaWorld. 1998-01-11. Приступљено 2011-01-01. „'Before Collections made its most welcome debut, the standard methods for grouping Java objects were via the array, the Vector, and the Hashtable. All three of these collections have different methods and syntax for accessing members: arrays use the square bracket ([]) symbols, Vector uses the elementAt method, and Hashtable uses
get
andput
methods.'” - ^ а б Doug Lea. „Overview of the collections Package”. Приступљено 2011-01-01. „'The Sun Java Development Kit JDK1.2 finally includes a standard set of collection classes. While there are some design and implementation differences, the JDK1.2 package contains most of the same basic abstractions, structure, and functionality as this package. For this reason, this collections package will NOT be further updated'”
- ^ „Generic Collection Library for Java™”. Приступљено 2011-01-01.
- ^ „Need a good set of abstract data structures? ObjectSpace's JGL packs a punch!”. JavaWorld. 1997-01-06. Приступљено 2011-01-01. „'As with Java itself, the Java Generic Library borrows heavily from the C++ camp: It takes the best from C++'s STL, while leaving the C++ warts behind. Most C++ programmers today will know of their STL, but few are managing to exploit its potential.'”
- ^ „The battle of the container frameworks: which should you use?”. JavaWorld. 1999-01-01. Приступљено 2011-01-01. „'Comparing ObjectSpace Inc.'s JGL and Sun's Collections Framework turns out to be like comparing apples and kiwi fruits. At first sight, the two frameworks seem to be competing for the same developers, but after a closer inspection it is clear that the two cannot be compared fairly without acknowledging first that the two frameworks have different goals. If, like Sun's documentation states, Collections is going to homogenize Sun's own APIs (core API, extensions, etc.), then clearly Collections has to be great news, and a good thing, even to the most fanatic JGL addict. Provided Sun doesn't break its promise in this area, I'll be happy to invest my resources in adopting Collections in earnest. '”
- ^ „Iterable (Java Platform SE 7 )”. Docs.oracle.com. 2013-06-06. Приступљено 2013-08-16.
- ^ „List (Java Platform SE 7 )”. Docs.oracle.com. 2013-06-06. Приступљено 2013-08-16.