- Java Collection Framework
- Kokoelmakehyksen hierarkia
- Kokoelman käyttöliittymä
- 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:
- Liitännät ja niiden toteutukset eli luokat
- 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.
Keräysrajapinnan menetelmät
Kokoelman käyttöliittymässä on ilmoitettu monia menetelmiä. Ne ovat seuraavat:
Ei. | Menetelmä | Kuvaus |
---|---|---|
1 | julkinen boolen lisäys(E e) | Sitä käytetään elementin lisäämiseen tähän kokoelmaan. |
2 | julkinen boolean addAll (kokoelma c) | Sitä käytetään määritetyn kokoelmaelementtien lisäämiseen kutsuvaan kokoelmaan. |
3 | julkinen boolean poista (Objektielementti) | Sitä käytetään elementin poistamiseen kokoelmasta. |
4 | julkinen boolean removeAll (kokoelma c) | Sitä käytetään poistamaan kaikki määritetyn kokoelman elementit kutsuvasta kokoelmasta. |
5 | oletusarvoinen looginen poistoIf (predikaattisuodatin) | Sitä käytetään poistamaan kaikki kokoelman elementit, jotka täyttävät määritetyn predikaatin. |
6 | julkinen boolean säilyttää kaikki (kokoelma c) | Sitä käytetään poistamaan kaikki kutsuvan kokoelman elementit määritettyä kokoelmaa lukuun ottamatta. |
7 | julkinen int koko() | Se palauttaa kokoelman elementtien kokonaismäärän. |
8 | public void clear() | Se poistaa elementtien kokonaismäärän kokoelmasta. |
9 | julkinen boolean sisältää (Objektielementti) | Sitä käytetään elementin etsimiseen. |
10 | julkinen boolean sisältääKaikki(kokoelma c) | Sitä käytetään etsimään määritetystä kokoelmasta kokoelmassa. |
yksitoista | julkinen iteraattori iteraattori() | Se palauttaa iteraattorin. |
12 | julkinen objekti[] toArray() | Se muuntaa kokoelman joukoksi. |
13 | julkinen T[] toArray(T[] a) | Se muuntaa kokoelman joukoksi. Tässä palautetun taulukon ajonaikainen tyyppi on määritetyn taulukon ajonaikainen tyyppi. |
14 | julkinen boolean isEmpty() | Se tarkistaa, onko kokoelma tyhjä. |
viisitoista | oletus Stream parallelStream() | Se palauttaa mahdollisesti rinnakkaisen streamin, jonka lähteenä on kokoelma. |
16 | oletus Stream stream() | Se palauttaa peräkkäisen streamin, jonka lähteenä on kokoelma. |
17 | oletus Spliterator spliterator() | Se luo jakajan kokoelman määritettyjen elementtien päälle. |
18 | julkinen looginen yhtälö (Objektielementti) | Se sopii kahteen kokoelmaan. |
19 | julkinen 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 |
---|---|---|
1 | julkinen boolean hasNext() | Se palauttaa tosi, jos iteraattorissa on enemmän elementtejä, muuten se palauttaa epätosi. |
2 | julkinen objekti seuraava() | Se palauttaa elementin ja siirtää kohdistimen seuraavaan elementtiin. |
3 | public 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 VijayMitä aiomme oppia Java Collections Frameworkissa
- ArrayList-luokka
- LinkedList-luokka
- Lista käyttöliittymä
- HashSet-luokka
- LinkedHashSet-luokka
- TreeSet-luokka
- PriorityQueue-luokka
- Karttakäyttöliittymä
- HashMap-luokka
- LinkedHashMap-luokka
- TreeMap-luokka
- Hashtable-luokka
- Lajittelu
- Vertailukelpoinen käyttöliittymä
- Vertailun käyttöliittymä
- Ominaisuudet luokka Javassa