logo

Samlinger i Java

  1. Java Collection Framework
  2. Hierarki av samlingsrammeverk
  3. Samlingsgrensesnitt
  4. Iterator-grensesnitt

De Samling i Java er et rammeverk som gir en arkitektur for å lagre og manipulere gruppen av objekter.

Java Collections kan oppnå alle operasjonene du utfører på en data som søk, sortering, innsetting, manipulering og sletting.

Java Collection betyr en enkelt enhet av objekter. Java Collection-rammeverket gir mange grensesnitt (Set, List, Queue, Deque) og klasser ( ArrayList , Vektor, LinkedList , Prioritetskø , HashSet, LinkedHashSet, TreeSet).

Hva er samling i Java

En samling representerer en enkelt enhet av objekter, dvs. en gruppe.

Hva er et rammeverk i Java

  • Det gir ferdiglagd arkitektur.
  • Den representerer et sett med klasser og grensesnitt.
  • Det er valgfritt.

Hva er innsamlingsrammeverket

Samlingsrammeverket representerer en enhetlig arkitektur for lagring og manipulering av en gruppe objekter. Det har:

  1. Grensesnitt og dets implementeringer, dvs. klasser
  2. Algoritme

Vet du?
  • Hva er de to måtene å iterere elementene i en samling på?
  • Hva er forskjellen mellom ArrayList og LinkedList klasser i samlingsrammeverket?
  • Hva er forskjellen mellom ArrayList og Vector-klasser i samlingsrammeverket?
  • Hva er forskjellen mellom HashSet- og HashMap-klasser i samlingsrammeverket?
  • Hva er forskjellen mellom HashMap og Hashtable-klassen?
  • Hva er forskjellen mellom Iterator- og Enumeration-grensesnittet i samlingsrammeverket?
  • Hvordan kan vi sortere elementene i et objekt? Hva er forskjellen mellom sammenlignbare og komparatorgrensesnitt?
  • Hva betyr hashcode()-metoden?
  • Hva er forskjellen mellom Java-samling og Java-samlinger?

Hierarki av samlingsrammeverk

La oss se hierarkiet til samlingsrammeverket. De java.util pakken inneholder alle klasser og grensesnitt for innsamlingsrammen.

Hierarki av Java Collection-rammeverket

Metoder for innsamlingsgrensesnitt

Det er mange metoder deklarert i innsamlingsgrensesnittet. De er som følger:

Nei.MetodeBeskrivelse
1offentlig boolsk add(E e)Den brukes til å sette inn et element i denne samlingen.
2offentlig boolsk addAll(Samling c)Den brukes til å sette inn de angitte samlingselementene i den påkallende samlingen.
3offentlig boolesk fjern (objektelement)Den brukes til å slette et element fra samlingen.
4offentlig boolsk removeAll(Samling c)Den brukes til å slette alle elementene i den angitte samlingen fra den påkallende samlingen.
5standard boolesk removeIf(predikatfilter)Den brukes til å slette alle elementene i samlingen som tilfredsstiller det angitte predikatet.
6offentlig boolsk retainAll(Samling c)Den brukes til å slette alle elementene i påkallende samling bortsett fra den spesifiserte samlingen.
7offentlig int størrelse()Den returnerer det totale antallet elementer i samlingen.
8public void clear()Det fjerner det totale antallet elementer fra samlingen.
9offentlig boolsk inneholder(Objektelement)Den brukes til å søke etter et element.
10offentlig boolesk inneholder alle (samling c)Den brukes til å søke i den angitte samlingen i samlingen.
elleveoffentlig iterator iterator()Den returnerer en iterator.
12offentlig objekt[] tilArray()Den konverterer samling til array.
1. 3offentlig T[] tilArray(T[] a)Den konverterer samling til array. Her er kjøretidstypen for den returnerte matrisen den for den angitte matrisen.
14offentlig boolsk er Empty()Den sjekker om samlingen er tom.
femtenstandard Stream parallelStream()Den returnerer en muligens parallell strøm med samlingen som kilde.
16standard strømstrøm()Den returnerer en sekvensiell strøm med samlingen som kilde.
17standard Spliterator splitterator()Den genererer en splitter over de angitte elementene i samlingen.
18offentlig boolsk lik (objektelement)Den matcher to samlinger.
19offentlig int hashCode()Den returnerer hash-kodenummeret til samlingen.

Iterator-grensesnitt

Iterator-grensesnittet gir muligheten til å iterere elementene kun i foroverretning.

Metoder for Iterator-grensesnitt

Det er bare tre metoder i Iterator-grensesnittet. De er:

Nei.MetodeBeskrivelse
1offentlig boolsk hasNext()Den returnerer sant hvis iteratoren har flere elementer ellers returnerer den usann.
2offentlig objekt neste()Den returnerer elementet og flytter markørpekeren til neste element.
3public void remove()Den fjerner de siste elementene returnert av iteratoren. Den er mindre brukt.

Iterable grensesnitt

Iterable-grensesnittet er rotgrensesnittet for alle samlingsklassene. Samling-grensesnittet utvider Iterable-grensesnittet, og derfor implementerer alle underklassene til Collection-grensesnittet også Iterable-grensesnittet.

Den inneholder bare én abstrakt metode. dvs.,

 Iterator iterator() 

Den returnerer iteratoren over elementene av type T.

maskinlæringsmodeller

Innsamlingsgrensesnitt

Samlingsgrensesnittet er grensesnittet som implementeres av alle klassene i samlingsrammeverket. Den erklærer metodene som hver samling vil ha. Med andre ord kan vi si at innsamlingsgrensesnittet bygger grunnlaget som innsamlingsrammeverket er avhengig av.

Noen av metodene for samlingsgrensesnittet er Boolean add ( Object obj), Boolean addAll ( Collection c), void clear(), etc. som er implementert av alle underklassene til Collection interface.


Listegrensesnitt

Listegrensesnittet er undergrensesnittet til samlingsgrensesnittet. Det hindrer en listetype datastruktur der vi kan lagre den ordnede samlingen av objekter. Den kan ha dupliserte verdier.

Listegrensesnittet er implementert av klassene ArrayList, LinkedList, Vector og Stack.

For å instansiere listegrensesnittet må vi bruke:

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

Det er forskjellige metoder i List-grensesnittet som kan brukes til å sette inn, slette og få tilgang til elementene fra listen.

Klassene som implementerer List-grensesnittet er gitt nedenfor.


ArrayList

ArrayList-klassen implementerer List-grensesnittet. Den bruker en dynamisk matrise for å lagre det dupliserte elementet til forskjellige datatyper. ArrayList-klassen opprettholder innsettingsrekkefølgen og er ikke-synkronisert. Elementene som er lagret i ArrayList-klassen kan nås tilfeldig. Tenk på følgende eksempel.

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

Produksjon:

 Ravi Vijay Ravi Ajay 

LinkedList

LinkedList implementerer samlingsgrensesnittet. Den bruker en dobbelt koblet liste internt for å lagre elementene. Den kan lagre de dupliserte elementene. Den opprettholder innsettingsrekkefølgen og er ikke synkronisert. I LinkedList er manipulasjonen rask fordi ingen skifting er nødvendig.

Tenk på følgende eksempel.

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

Produksjon:

 Ravi Vijay Ravi Ajay 

Vektor

Vector bruker en dynamisk matrise for å lagre dataelementene. Det ligner på ArrayList. Imidlertid er den synkronisert og inneholder mange metoder som ikke er en del av samlingsrammeverket.

Tenk på følgende eksempel.

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

Produksjon:

 Ayush Amit Ashish Garima 

Stable

Stabelen er underklassen til Vector. Den implementerer sist-inn-først-ut-datastrukturen, dvs. Stack. Stabelen inneholder alle metodene til Vector-klassen og tilbyr også metodene som boolean push(), boolean peek(), boolean push(objekt o), som definerer egenskapene.

Tenk på følgende eksempel.

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

Produksjon:

 Ayush Garvit Amit Ashish 

Køgrensesnitt

Køgrensesnittet opprettholder først-inn-først-ut-rekkefølgen. Den kan defineres som en ordnet liste som brukes til å inneholde elementene som skal behandles. Det er forskjellige klasser som PriorityQueue, Deque og ArrayDeque som implementerer Queue-grensesnittet.

Køgrensesnitt kan instansieres som:

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

Det er forskjellige klasser som implementerer Queue-grensesnittet, noen av dem er gitt nedenfor.


Prioritetskø

PriorityQueue-klassen implementerer Queue-grensesnittet. Den inneholder elementene eller objektene som skal behandles av deres prioriteringer. PriorityQueue tillater ikke at null-verdier lagres i køen.

Tenk på følgende eksempel.

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

Produksjon:

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

Og grensesnittet

Deque-grensesnitt utvider Queue-grensesnittet. I Deque kan vi fjerne og legge til elementene fra begge sider. Deque står for en dobbel-ended kø som gjør oss i stand til å utføre operasjonene i begge ender.

Deque kan instansieres som:

 Deque d = new ArrayDeque(); 

ArrayDeque

ArrayDeque-klassen implementerer Deque-grensesnittet. Det letter oss å bruke Deque. I motsetning til kø, kan vi legge til eller slette elementene fra begge ender.

ArrayDeque er raskere enn ArrayList og Stack og har ingen kapasitetsbegrensninger.

Tenk på følgende eksempel.

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

Produksjon:

 Gautam Karan Ajay 

Angi grensesnitt

Set Interface i Java er til stede i java.util-pakken. Det utvider samlingsgrensesnittet. Det representerer det uordnede settet med elementer som ikke tillater oss å lagre de dupliserte elementene. Vi kan lagre maksimalt én nullverdi i Set. Settet er implementert av HashSet, LinkedHashSet og TreeSet.

Settet kan instansieres som:

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

HashSet

HashSet-klassen implementerer Set Interface. Den representerer samlingen som bruker en hash-tabell for lagring. Hashing brukes til å lagre elementene i HashSet. Den inneholder unike gjenstander.

Tenk på følgende eksempel.

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

Produksjon:

 Vijay Ravi Ajay 

LinkedHashSet

LinkedHashSet-klassen representerer LinkedList-implementeringen av Set Interface. Den utvider HashSet-klassen og implementerer Set-grensesnittet. I likhet med HashSet inneholder den også unike elementer. Den opprettholder innsettingsrekkefølgen og tillater null-elementer.

Tenk på følgende eksempel.

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

Produksjon:

 Ravi Vijay Ajay 

SortedSet-grensesnitt

SortedSet er alternativet til Set-grensesnittet som gir en total rekkefølge på elementene. Elementene i SortedSet er ordnet i økende (stigende) rekkefølge. SortedSet gir tilleggsmetodene som hemmer den naturlige rekkefølgen av elementene.

SortedSet kan instansieres som:

 SortedSet set = new TreeSet(); 

Tresett

Java TreeSet-klassen implementerer Set-grensesnittet som bruker et tre for lagring. Som HashSet inneholder TreeSet også unike elementer. Tilgangs- og gjenfinningstiden til TreeSet er imidlertid ganske rask. Elementene i TreeSet lagret i stigende rekkefølge.

Tenk på følgende eksempel:

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

Produksjon:

 Ajay Ravi Vijay 
Hva skal vi lære i Java Collections Framework
  1. ArrayList klasse
  2. LinkedList-klassen
  3. Listegrensesnitt
  4. HashSet-klassen
  5. LinkedHashSet-klassen
  6. TreeSet klasse
  7. Prioritetskø-klasse
  8. Kartgrensesnitt
  9. HashMap-klassen
  10. LinkedHashMap-klassen
  11. TreeMap-klassen
  12. Hastbar klasse
  13. Sortering
  14. Sammenlignbart grensesnitt
  15. Komparatorgrensesnitt
  16. Egenskapsklasse i Java