logo

Kokoelmat Javassa

  1. Java Collection Framework
  2. Kokoelmakehyksen hierarkia
  3. Kokoelman käyttöliittymä
  4. Iteraattorin käyttöliittymä

The Kokoelma Java-kielellä on kehys, joka tarjoaa arkkitehtuurin objektiryhmän tallentamiseen ja manipulointiin.

Java-kokoelmat voivat suorittaa kaikki toiminnot, joita suoritat tiedoille, kuten etsiminen, lajittelu, lisäys, käsittely ja poistaminen.

Java-kokoelma tarkoittaa yhtä objektiyksikköä. Java Collection -kehys tarjoaa monia käyttöliittymiä (Set, List, Queue, Deque) ja luokkia ( ArrayList , vektori, LinkedList , PriorityQueue , HashSet, LinkedHashSet, TreeSet).

Mikä on kokoelma Javassa

Kokoelma edustaa yhtä objektiyksikköä, eli ryhmää.

Mikä on Java-kehys

  • Se tarjoaa valmiin arkkitehtuurin.
  • Se edustaa sarjaa luokkia ja rajapintoja.
  • Se on valinnainen.

Mikä on kokoelmakehys

Kokoelmakehys edustaa yhtenäistä arkkitehtuuria objektiryhmän tallentamiseen ja käsittelyyn. Sillä on:

  1. Liitännät ja niiden toteutukset eli luokat
  2. Algoritmi

Tiedätkö?
  • Mitkä ovat kaksi tapaa iteroida kokoelman elementtejä?
  • Mitä eroa on ArrayList- ja LinkedList-luokkien välillä kokoelmakehyksessä?
  • Mitä eroa on ArrayList- ja Vector-luokkien välillä kokoelmakehyksessä?
  • Mitä eroa on HashSet- ja HashMap-luokilla kokoelmakehyksessä?
  • Mitä eroa on HashMap- ja Hashtable-luokilla?
  • Mitä eroa on Iterator- ja Enumeration-rajapinnalla kokoelmakehyksessä?
  • Kuinka voimme lajitella kohteen elementit? Mitä eroa on Comparable- ja Comparator-liitäntöjen välillä?
  • Mitä hashcode()-metodi tarkoittaa?
  • Mitä eroa on Java-kokoelmalla ja Java-kokoelmalla?

Kokoelmakehyksen hierarkia

Katsotaanpa kokoelmakehyksen hierarkiaa. The java.util paketti sisältää kaikki luokat ja käyttöliittymät kokoelmakehystä varten.

Java Collection -kehyksen hierarkia

Keräysrajapinnan menetelmät

Kokoelman käyttöliittymässä on ilmoitettu monia menetelmiä. Ne ovat seuraavat:

Ei.MenetelmäKuvaus
1julkinen boolen lisäys(E e)Sitä käytetään elementin lisäämiseen tähän kokoelmaan.
2julkinen boolean addAll (kokoelma c)Sitä käytetään määritetyn kokoelmaelementtien lisäämiseen kutsuvaan kokoelmaan.
3julkinen boolean poista (Objektielementti)Sitä käytetään elementin poistamiseen kokoelmasta.
4julkinen boolean removeAll (kokoelma c)Sitä käytetään poistamaan kaikki määritetyn kokoelman elementit kutsuvasta kokoelmasta.
5oletusarvoinen looginen poistoIf (predikaattisuodatin)Sitä käytetään poistamaan kaikki kokoelman elementit, jotka täyttävät määritetyn predikaatin.
6julkinen boolean säilyttää kaikki (kokoelma c)Sitä käytetään poistamaan kaikki kutsuvan kokoelman elementit määritettyä kokoelmaa lukuun ottamatta.
7julkinen int koko()Se palauttaa kokoelman elementtien kokonaismäärän.
8public void clear()Se poistaa elementtien kokonaismäärän kokoelmasta.
9julkinen boolean sisältää (Objektielementti)Sitä käytetään elementin etsimiseen.
10julkinen boolean sisältääKaikki(kokoelma c)Sitä käytetään etsimään määritetystä kokoelmasta kokoelmassa.
yksitoistajulkinen iteraattori iteraattori()Se palauttaa iteraattorin.
12julkinen objekti[] toArray()Se muuntaa kokoelman joukoksi.
13julkinen T[] toArray(T[] a)Se muuntaa kokoelman joukoksi. Tässä palautetun taulukon ajonaikainen tyyppi on määritetyn taulukon ajonaikainen tyyppi.
14julkinen boolean isEmpty()Se tarkistaa, onko kokoelma tyhjä.
viisitoistaoletus Stream parallelStream()Se palauttaa mahdollisesti rinnakkaisen streamin, jonka lähteenä on kokoelma.
16oletus Stream stream()Se palauttaa peräkkäisen streamin, jonka lähteenä on kokoelma.
17oletus Spliterator spliterator()Se luo jakajan kokoelman määritettyjen elementtien päälle.
18julkinen looginen yhtälö (Objektielementti)Se sopii kahteen kokoelmaan.
19julkinen int hashCode()Se palauttaa kokoelman hash-koodin.

Iteraattorin käyttöliittymä

Iteraattorirajapinta tarjoaa mahdollisuuden iteroida elementtejä vain eteenpäin.

Iteraattorin käyttöliittymän menetelmät

Iterator-käyttöliittymässä on vain kolme menetelmää. He ovat:

Ei.MenetelmäKuvaus
1julkinen boolean hasNext()Se palauttaa tosi, jos iteraattorissa on enemmän elementtejä, muuten se palauttaa epätosi.
2julkinen objekti seuraava()Se palauttaa elementin ja siirtää kohdistimen seuraavaan elementtiin.
3public void poista()Se poistaa viimeiset iteraattorin palauttamat elementit. Sitä käytetään vähemmän.

Iteroitava käyttöliittymä

Iterable-käyttöliittymä on kaikkien kokoelmaluokkien pääkäyttöliittymä. Kokoelmarajapinta laajentaa Iterable-rajapintaa ja siksi kaikki Collection-rajapinnan alaluokat toteuttavat myös Iterable-rajapinnan.

Se sisältää vain yhden abstraktin menetelmän. eli

 Iterator iterator() 

Se palauttaa iteraattorin T-tyypin elementtien päälle.

vektorin koko c++

Kokoelman käyttöliittymä

Kokoelmarajapinta on rajapinta, jonka kaikki kokoelmakehyksen luokat toteuttavat. Se ilmoittaa menetelmät, jotka jokaisessa kokoelmassa on. Toisin sanoen voidaan sanoa, että Collection-rajapinta rakentaa perustan, josta kokoelmakehys riippuu.

Jotkut Collection-rajapinnan menetelmistä ovat Boolen add (Object obj), Boolen addAll (Kokoelma c), void clear() jne., jotka toteutetaan kaikissa Collection-rajapinnan alaluokissa.


Luettelon käyttöliittymä

Luetteloliittymä on Collection-käyttöliittymän lapsikäyttöliittymä. Se estää listatyyppisen tietorakenteen, johon voimme tallentaa järjestetyn objektikokoelman. Sillä voi olla päällekkäisiä arvoja.

List-rajapinnan toteuttavat luokat ArrayList, LinkedList, Vector ja Stack.

List-käyttöliittymän luomiseksi meidän on käytettävä:

 List list1= new ArrayList(); List list2 = new LinkedList(); List list3 = new Vector(); List list4 = new Stack(); 

List-käyttöliittymässä on useita menetelmiä, joilla voidaan lisätä, poistaa ja käyttää luettelon elementtejä.

Luokat, jotka toteuttavat List-rajapinnan, on annettu alla.


ArrayList

ArrayList-luokka toteuttaa List-rajapinnan. Se käyttää dynaamista taulukkoa tallentaakseen eri tietotyyppien kaksoiskappaleet. ArrayList-luokka säilyttää lisäysjärjestyksen, eikä sitä synkronoida. ArrayList-luokkaan tallennettuja elementtejä voidaan käyttää satunnaisesti. Harkitse seuraavaa esimerkkiä.

 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()); } } } 

Lähtö:

 Ravi Vijay Ravi Ajay 

LinkedList

LinkedList toteuttaa Collection-rajapinnan. Se käyttää sisäisesti kaksoislinkitettyä luetteloa elementtien tallentamiseen. Se voi tallentaa päällekkäisiä elementtejä. Se säilyttää lisäysjärjestyksen, eikä sitä synkronoida. LinkedListissä käsittely on nopeaa, koska siirtoa ei tarvita.

Harkitse seuraavaa esimerkkiä.

 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()); } } } 

Lähtö:

 Ravi Vijay Ravi Ajay 

Vektori

Vector käyttää dynaamista taulukkoa tietoelementtien tallentamiseen. Se on samanlainen kuin ArrayList. Se on kuitenkin synkronoitu ja sisältää monia menetelmiä, jotka eivät ole osa Collection-kehystä.

Harkitse seuraavaa esimerkkiä.

 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()); } } } 

Lähtö:

 Ayush Amit Ashish Garima 

Pino

Pino on Vectorin alaluokka. Se toteuttaa viimeinen ensin -tietorakenteen eli pinon. Pino sisältää kaikki Vector-luokan menetelmät ja sisältää myös menetelmät, kuten boolean push(), boolean peek(), boolean push(object o), joka määrittää sen ominaisuudet.

Harkitse seuraavaa esimerkkiä.

 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()); } } } 

Lähtö:

 Ayush Garvit Amit Ashish 

Jonon käyttöliittymä

Jonokäyttöliittymä ylläpitää ensimmäinen sisään ensimmäinen ulos -järjestystä. Se voidaan määritellä järjestetyksi listaksi, jota käytetään käsittelemään tulevia elementtejä. On olemassa useita luokkia, kuten PriorityQueue, Deque ja ArrayDeque, jotka toteuttavat Queue-rajapinnan.

Jonokäyttöliittymä voidaan instantoida seuraavasti:

 Queue q1 = new PriorityQueue(); Queue q2 = new ArrayDeque(); 

On olemassa useita luokkia, jotka toteuttavat Queue-rajapinnan, osa niistä on esitetty alla.


PriorityQueue

PriorityQueue-luokka toteuttaa Queue-rajapinnan. Se sisältää elementit tai objektit, jotka on tarkoitus käsitellä niiden prioriteettien mukaan. PriorityQueue ei salli nolla-arvojen tallentamista jonoon.

Harkitse seuraavaa esimerkkiä.

 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()); } } } 

Lähtö:

 head:Amit Sharma head:Amit Sharma iterating the queue elements: Amit Sharma Raj JaiShankar Vijay Raj after removing two elements: Raj Vijay Raj 

Ja käyttöliittymä

Deque-liitäntä laajentaa Queue-liittymää. Dequessä voimme poistaa ja lisätä elementtejä molemmilta puolilta. Deque tarkoittaa kaksipäistä jonoa, jonka avulla voimme suorittaa toiminnot molemmissa päissä.

Deque voidaan instantoida seuraavasti:

 Deque d = new ArrayDeque(); 

ArrayDeque

ArrayDeque-luokka toteuttaa Deque-rajapinnan. Se helpottaa Dequen käyttöä. Toisin kuin jonossa, voimme lisätä tai poistaa elementtejä molemmista päistä.

ArrayDeque on nopeampi kuin ArrayList ja Stack, eikä sillä ole kapasiteettirajoituksia.

Harkitse seuraavaa esimerkkiä.

 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); } } } 

Lähtö:

 Gautam Karan Ajay 

Aseta käyttöliittymä

Set Interface in Java on java.util-paketissa. Se laajentaa kokoelman käyttöliittymää. Se edustaa järjestämätöntä elementtijoukkoa, joka ei salli meidän tallentaa päällekkäisiä kohteita. Voimme tallentaa enintään yhden nolla-arvon Setissä. Setin toteuttavat HashSet, LinkedHashSet ja TreeSet.

Sarja voidaan instantoida seuraavasti:

 Set s1 = new HashSet(); Set s2 = new LinkedHashSet(); Set s3 = new TreeSet(); 

HashSet

HashSet-luokka toteuttaa Set Interfacen. Se edustaa kokoelmaa, joka käyttää hash-taulukkoa varastointiin. Hash-taustaa käytetään elementtien tallentamiseen HashSetiin. Se sisältää ainutlaatuisia esineitä.

Harkitse seuraavaa esimerkkiä.

 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()); } } } 

Lähtö:

 Vijay Ravi Ajay 

LinkedHashSet

LinkedHashSet-luokka edustaa Set Interfacen LinkedList-toteutusta. Se laajentaa HashSet-luokkaa ja toteuttaa Set-rajapinnan. Kuten HashSet, se sisältää myös ainutlaatuisia elementtejä. Se ylläpitää lisäysjärjestystä ja sallii nollaelementit.

Harkitse seuraavaa esimerkkiä.

 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()); } } } 

Lähtö:

 Ravi Vijay Ajay 

SortedSet-käyttöliittymä

SortedSet on Set-liittymän vaihtoehto, joka tarjoaa elementtien kokonaisjärjestyksen. SortedSetin elementit on järjestetty kasvavaan (nousevaan) järjestykseen. SortedSet tarjoaa lisämenetelmiä, jotka estävät elementtien luonnollisen järjestyksen.

SortedSet voidaan instantoida seuraavasti:

 SortedSet set = new TreeSet(); 

TreeSet

Java TreeSet -luokka toteuttaa Set-rajapinnan, joka käyttää puuta tallennukseen. Kuten HashSet, TreeSet sisältää myös ainutlaatuisia elementtejä. TreeSetin käyttö- ja hakuaika on kuitenkin melko nopea. TreeSetin elementit tallennetaan nousevassa järjestyksessä.

Harkitse seuraavaa esimerkkiä:

 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()); } } } 

Lähtö:

 Ajay Ravi Vijay 
Mitä aiomme oppia Java Collections Frameworkissa
  1. ArrayList-luokka
  2. LinkedList-luokka
  3. Lista käyttöliittymä
  4. HashSet-luokka
  5. LinkedHashSet-luokka
  6. TreeSet-luokka
  7. PriorityQueue-luokka
  8. Karttakäyttöliittymä
  9. HashMap-luokka
  10. LinkedHashMap-luokka
  11. TreeMap-luokka
  12. Hashtable-luokka
  13. Lajittelu
  14. Vertailukelpoinen käyttöliittymä
  15. Vertailun käyttöliittymä
  16. Ominaisuudet luokka Javassa