The Zbirka u Javi je okvir koji pruža arhitekturu za pohranu i manipuliranje grupom objekata.
Java zbirke mogu postići sve operacije koje izvodite na podacima kao što su pretraživanje, sortiranje, umetanje, manipulacija i brisanje.
Java zbirka znači jednu jedinicu objekata. Java Collection framework pruža mnoga sučelja (Set, List, Queue, Deque) i klase ( ArrayList , vektor, LinkedList , PriorityQueue , HashSet, LinkedHashSet, TreeSet).
Što je zbirka u Javi
Zbirka predstavlja jednu jedinicu objekata, tj. grupu.
Što je framework u Javi
- Pruža gotovu arhitekturu.
- Predstavlja skup klasa i sučelja.
- Nije obavezno.
Što je okvir zbirke
Okvir zbirke predstavlja jedinstvenu arhitekturu za pohranjivanje i manipuliranje grupom objekata. Ima:
- Sučelja i njihove implementacije, tj. klase
- Algoritam
Znaš li?
- Koja su dva načina za ponavljanje elemenata zbirke?
- Koja je razlika između klasa ArrayList i LinkedList u okviru zbirke?
- Koja je razlika između klasa ArrayList i Vector u okviru zbirke?
- Koja je razlika između klasa HashSet i HashMap u okviru zbirke?
- Koja je razlika između klase HashMap i Hashtable?
- Koja je razlika između Iteratora i Enumeration sučelja u okviru zbirke?
- Kako možemo sortirati elemente objekta? Koja je razlika između sučelja Comparable i Comparator?
- Što znači metoda hashcode()?
- Koja je razlika između Java zbirke i Java kolekcija?
Hijerarhija okvira zbirke
Pogledajmo hijerarhiju okvira zbirke. The java.util paket sadrži sve klase i sučelja za okvir zbirke.
Metode sučelja prikupljanja
Mnogo je metoda deklariranih u sučelju zbirke. Oni su sljedeći:
Ne. | metoda | Opis |
---|---|---|
1 | javno Booleovo dodavanje (E e) | Koristi se za umetanje elementa u ovu kolekciju. |
2 | javni booleov addAll(kolekcija c) | Koristi se za umetanje navedenih elemenata zbirke u pozivajuću zbirku. |
3 | javno booleovo uklanjanje (element objekta) | Koristi se za brisanje elementa iz kolekcije. |
4 | javni booleov removeAll(kolekcija c) | Koristi se za brisanje svih elemenata navedene zbirke iz pozivajuće zbirke. |
5 | default Boolean removeIf(Filter predikata) | Koristi se za brisanje svih elemenata kolekcije koji zadovoljavaju navedeni predikat. |
6 | javni booleov retainAll(kolekcija c) | Koristi se za brisanje svih elemenata pozivajuće kolekcije osim navedene kolekcije. |
7 | javna int veličina() | Vraća ukupan broj elemenata u kolekciji. |
8 | javni void clear() | Uklanja ukupan broj elemenata iz zbirke. |
9 | javni booleov sadrži (element objekta) | Koristi se za pretraživanje elementa. |
10 | javni booleov sadržiSve(zbirka c) | Koristi se za pretraživanje navedene zbirke u zbirci. |
jedanaest | javni iterator iterator() | Vraća iterator. |
12 | javni objekt[] u niz() | Pretvara kolekciju u niz. |
13 | public T[] toArray(T[] a) | Pretvara kolekciju u niz. Ovdje je tip vremena izvođenja vraćenog polja onaj navedenog polja. |
14 | javni booleov isEmpty() | Provjerava je li zbirka prazna. |
petnaest | zadani tok parallelStream() | Vraća mogući paralelni tok sa zbirkom kao izvorom. |
16 | zadani Stream stream() | Vraća sekvencijalni Stream sa zbirkom kao izvorom. |
17 | zadani Spliterator spliterator() | Generira Spliterator preko navedenih elemenata u kolekciji. |
18 | javne booleove vrijednosti (element objekta) | Odgovara dvjema kolekcijama. |
19 | javni int hashCode() | Vraća broj hash koda zbirke. |
Sučelje iteratora
Sučelje iteratora omogućuje ponavljanje elemenata samo u smjeru naprijed. |
Metode sučelja Iteratora
U sučelju Iteratora postoje samo tri metode. Oni su:
Ne. | metoda | Opis |
---|---|---|
1 | javni booleov hasNext() | Vraća true ako iterator ima više elemenata, inače vraća false. |
2 | javni objekt next() | Vraća element i pomiče pokazivač kursora na sljedeći element. |
3 | public void remove() | Uklanja posljednje elemente koje je vratio iterator. Manje se koristi. |
Iterabilno sučelje
Iterable sučelje je korijensko sučelje za sve klase zbirke. Sučelje Collection proširuje sučelje Iterable i stoga sve podklase sučelja Collection također implementiraju sučelje Iterable.
Sadrži samo jednu apstraktnu metodu. tj.
Iterator iterator()
Vraća iterator preko elemenata tipa T.
java programski nizovi
Sučelje zbirke
Sučelje zbirke je sučelje koje implementiraju sve klase u okviru zbirke. Deklariše metode koje će svaka zbirka imati. Drugim riječima, možemo reći da sučelje zbirke gradi temelje o kojima ovisi okvir zbirke.
Neke od metoda sučelja Collection su Boolean add ( Object obj), Boolean addAll ( Collection c), void clear() itd. koje implementiraju sve podklase sučelja Collection.
Sučelje popisa
Sučelje popisa je podređeno sučelje sučelja zbirke. On sprječava podatkovnu strukturu tipa popisa u koju možemo pohraniti uređenu zbirku objekata. Može imati duplicirane vrijednosti.
Sučelje popisa implementirano je klasama ArrayList, LinkedList, Vector i Stack.
Da bismo instancirali List sučelje, moramo koristiti:
List list1= new ArrayList(); List list2 = new LinkedList(); List list3 = new Vector(); List list4 = new Stack();
U sučelju popisa postoje različite metode koje se mogu koristiti za umetanje, brisanje i pristup elementima s popisa.
Klase koje implementiraju List sučelje dane su u nastavku.
ArrayList
Klasa ArrayList implementira sučelje List. Koristi dinamički niz za pohranjivanje dupliciranog elementa različitih vrsta podataka. Klasa ArrayList održava redoslijed umetanja i nije sinkronizirana. Elementima pohranjenim u klasi ArrayList može se pristupiti nasumično. Razmotrite sljedeći primjer.
import java.util.*; class TestJavaCollection1{ public static void main(String args[]){ ArrayList list=new ArrayList();//Creating arraylist list.add('Ravi');//Adding object in arraylist list.add('Vijay'); list.add('Ravi'); list.add('Ajay'); //Traversing list through Iterator Iterator itr=list.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } } }
Izlaz:
Ravi Vijay Ravi Ajay
LinkedList
LinkedList implementira sučelje Collection. Interno koristi dvostruko povezani popis za pohranjivanje elemenata. Može pohraniti duplicirane elemente. Održava redoslijed umetanja i nije sinkroniziran. U LinkedListu, manipulacija je brza jer nije potrebno pomicanje.
Razmotrite sljedeći primjer.
import java.util.*; public class TestJavaCollection2{ public static void main(String args[]){ LinkedList al=new LinkedList(); al.add('Ravi'); al.add('Vijay'); al.add('Ravi'); al.add('Ajay'); Iterator itr=al.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } } }
Izlaz:
Ravi Vijay Ravi Ajay
Vektor
Vektor koristi dinamički niz za pohranjivanje podatkovnih elemenata. Sličan je ArrayList-u. Međutim, sinkroniziran je i sadrži mnoge metode koje nisu dio okvira zbirke.
Razmotrite sljedeći primjer.
import java.util.*; public class TestJavaCollection3{ public static void main(String args[]){ Vector v=new Vector(); v.add('Ayush'); v.add('Amit'); v.add('Ashish'); v.add('Garima'); Iterator itr=v.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } } }
Izlaz:
Ayush Amit Ashish Garima
Stog
Stog je potklasa Vektora. Implementira podatkovnu strukturu zadnji-ušao-prvi-izlaz, tj. stog. Stog sadrži sve metode klase Vector i također pruža svoje metode kao što su boolean push(), boolean peek(), boolean push(object o), koji definira njegova svojstva.
Razmotrite sljedeći primjer.
import java.util.*; public class TestJavaCollection4{ public static void main(String args[]){ Stack stack = new Stack(); stack.push('Ayush'); stack.push('Garvit'); stack.push('Amit'); stack.push('Ashish'); stack.push('Garima'); stack.pop(); Iterator itr=stack.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } } }
Izlaz:
Ayush Garvit Amit Ashish
Sučelje čekanja
Sučelje reda čekanja održava redoslijed prvi ušao, prvi izašao. Može se definirati kao uređeni popis koji se koristi za držanje elemenata koji će biti obrađeni. Postoje različite klase poput PriorityQueue, Deque i ArrayDeque koje implementiraju sučelje Queue.
Sučelje reda čekanja može se instancirati kao:
Queue q1 = new PriorityQueue(); Queue q2 = new ArrayDeque();
Postoje različite klase koje implementiraju sučelje Queue, a neke od njih su navedene u nastavku.
PriorityQueue
Klasa PriorityQueue implementira sučelje Queue. Sadrži elemente ili objekte koji se trebaju obraditi prema njihovim prioritetima. PriorityQueue ne dopušta pohranjivanje nultih vrijednosti u redu čekanja.
Razmotrite sljedeći primjer.
import java.util.*; public class TestJavaCollection5{ public static void main(String args[]){ PriorityQueue queue=new PriorityQueue(); queue.add('Amit Sharma'); queue.add('Vijay Raj'); queue.add('JaiShankar'); queue.add('Raj'); System.out.println('head:'+queue.element()); System.out.println('head:'+queue.peek()); System.out.println('iterating the queue elements:'); Iterator itr=queue.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } queue.remove(); queue.poll(); System.out.println('after removing two elements:'); Iterator itr2=queue.iterator(); while(itr2.hasNext()){ System.out.println(itr2.next()); } } }
Izlaz:
head:Amit Sharma head:Amit Sharma iterating the queue elements: Amit Sharma Raj JaiShankar Vijay Raj after removing two elements: Raj Vijay Raj
I sučelje
Deque sučelje proširuje sučelje Queue. U Dequeu možemo uklanjati i dodavati elemente s obje strane. Deque označava dvostruki red čekanja koji nam omogućuje izvođenje operacija na oba kraja.
Deque se može instancirati kao:
Deque d = new ArrayDeque();
ArrayDeque
Klasa ArrayDeque implementira Deque sučelje. Olakšava nam korištenje Deque-a. Za razliku od reda čekanja, elemente možemo dodavati ili brisati s oba kraja.
ArrayDeque je brži od ArrayList i Stack i nema ograničenja kapaciteta.
Razmotrite sljedeći primjer.
import java.util.*; public class TestJavaCollection6{ public static void main(String[] args) { //Creating Deque and adding elements Deque deque = new ArrayDeque(); deque.add('Gautam'); deque.add('Karan'); deque.add('Ajay'); //Traversing elements for (String str : deque) { System.out.println(str); } } }
Izlaz:
Gautam Karan Ajay
Postavi sučelje
Postavljanje sučelja u Javi nalazi se u paketu java.util. Proširuje sučelje zbirke. Predstavlja neuređeni skup elemenata koji nam ne dopušta pohranjivanje dupliciranih stavki. U Setu možemo pohraniti najviše jednu nultu vrijednost. Skup implementiraju HashSet, LinkedHashSet i TreeSet.
Skup se može instancirati kao:
Set s1 = new HashSet(); Set s2 = new LinkedHashSet(); Set s3 = new TreeSet();
HashSet
HashSet klasa implementira Set Interface. Predstavlja zbirku koja za pohranu koristi hash tablicu. Raspršivanje se koristi za pohranjivanje elemenata u HashSet. Sadrži jedinstvene predmete.
Razmotrite sljedeći primjer.
import java.util.*; public class TestJavaCollection7{ public static void main(String args[]){ //Creating HashSet and adding elements HashSet set=new HashSet(); set.add('Ravi'); set.add('Vijay'); set.add('Ravi'); set.add('Ajay'); //Traversing elements Iterator itr=set.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } } }
Izlaz:
Vijay Ravi Ajay
LinkedHashSet
Klasa LinkedHashSet predstavlja LinkedList implementaciju Set Interface. Proširuje klasu HashSet i implementira sučelje Set. Kao i HashSet, također sadrži jedinstvene elemente. Održava redoslijed umetanja i dopušta nulte elemente.
Razmotrite sljedeći primjer.
import java.util.*; public class TestJavaCollection8{ public static void main(String args[]){ LinkedHashSet set=new LinkedHashSet(); set.add('Ravi'); set.add('Vijay'); set.add('Ravi'); set.add('Ajay'); Iterator itr=set.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } } }
Izlaz:
Ravi Vijay Ajay
Sučelje SortedSet
SortedSet je alternativa Set sučelja koje pruža potpuni poredak njegovih elemenata. Elementi SortedSeta raspoređeni su u rastućem (uzlaznom) redoslijedu. SortedSet pruža dodatne metode koje sprječavaju prirodni poredak elemenata.
SortedSet se može instancirati kao:
SortedSet set = new TreeSet();
TreeSet
Java TreeSet klasa implementira Set sučelje koje koristi stablo za pohranu. Kao i HashSet, TreeSet također sadrži jedinstvene elemente. Međutim, vrijeme pristupa i dohvaćanja TreeSeta je prilično brzo. Elementi u TreeSet pohranjeni uzlaznim redoslijedom.
Razmotrite sljedeći primjer:
import java.util.*; public class TestJavaCollection9{ public static void main(String args[]){ //Creating and adding elements TreeSet set=new TreeSet(); set.add('Ravi'); set.add('Vijay'); set.add('Ravi'); set.add('Ajay'); //traversing elements Iterator itr=set.iterator(); while(itr.hasNext()){ System.out.println(itr.next()); } } }
Izlaz:
Ajay Ravi VijayŠto ćemo naučiti u Java Collections Frameworku
- Klasa ArrayList
- Klasa LinkedList
- Popis sučelja
- HashSet klasa
- Klasa LinkedHashSet
- Klasa TreeSet
- PriorityQueue klasa
- Sučelje karte
- klasa HashMap
- Klasa LinkedHashMap
- klasa TreeMap
- Klasa hashtable
- Sortiranje
- Usporedivo sučelje
- Sučelje komparatora
- Klasa svojstava u Javi