logo

Zbirke u Javi

  1. Java Collection Framework
  2. Hijerarhija okvira zbirke
  3. Sučelje zbirke
  4. Sučelje iteratora

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:

  1. Sučelja i njihove implementacije, tj. klase
  2. 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.

Hijerarhija Java Collection frameworka

Metode sučelja prikupljanja

Mnogo je metoda deklariranih u sučelju zbirke. Oni su sljedeći:

Ne.metodaOpis
1javno Booleovo dodavanje (E e)Koristi se za umetanje elementa u ovu kolekciju.
2javni booleov addAll(kolekcija c)Koristi se za umetanje navedenih elemenata zbirke u pozivajuću zbirku.
3javno booleovo uklanjanje (element objekta)Koristi se za brisanje elementa iz kolekcije.
4javni booleov removeAll(kolekcija c)Koristi se za brisanje svih elemenata navedene zbirke iz pozivajuće zbirke.
5default Boolean removeIf(Filter predikata)Koristi se za brisanje svih elemenata kolekcije koji zadovoljavaju navedeni predikat.
6javni booleov retainAll(kolekcija c)Koristi se za brisanje svih elemenata pozivajuće kolekcije osim navedene kolekcije.
7javna int veličina()Vraća ukupan broj elemenata u kolekciji.
8javni void clear()Uklanja ukupan broj elemenata iz zbirke.
9javni booleov sadrži (element objekta)Koristi se za pretraživanje elementa.
10javni booleov sadržiSve(zbirka c)Koristi se za pretraživanje navedene zbirke u zbirci.
jedanaestjavni iterator iterator()Vraća iterator.
12javni objekt[] u niz()Pretvara kolekciju u niz.
13public T[] toArray(T[] a)Pretvara kolekciju u niz. Ovdje je tip vremena izvođenja vraćenog polja onaj navedenog polja.
14javni booleov isEmpty()Provjerava je li zbirka prazna.
petnaestzadani tok parallelStream()Vraća mogući paralelni tok sa zbirkom kao izvorom.
16zadani Stream stream()Vraća sekvencijalni Stream sa zbirkom kao izvorom.
17zadani Spliterator spliterator()Generira Spliterator preko navedenih elemenata u kolekciji.
18javne booleove vrijednosti (element objekta)Odgovara dvjema kolekcijama.
19javni 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.metodaOpis
1javni booleov hasNext()Vraća true ako iterator ima više elemenata, inače vraća false.
2javni objekt next()Vraća element i pomiče pokazivač kursora na sljedeći element.
3public 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
  1. Klasa ArrayList
  2. Klasa LinkedList
  3. Popis sučelja
  4. HashSet klasa
  5. Klasa LinkedHashSet
  6. Klasa TreeSet
  7. PriorityQueue klasa
  8. Sučelje karte
  9. klasa HashMap
  10. Klasa LinkedHashMap
  11. klasa TreeMap
  12. Klasa hashtable
  13. Sortiranje
  14. Usporedivo sučelje
  15. Sučelje komparatora
  16. Klasa svojstava u Javi