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:
- Grensesnitt og dets implementeringer, dvs. klasser
- 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.
Metoder for innsamlingsgrensesnitt
Det er mange metoder deklarert i innsamlingsgrensesnittet. De er som følger:
Nei. | Metode | Beskrivelse |
---|---|---|
1 | offentlig boolsk add(E e) | Den brukes til å sette inn et element i denne samlingen. |
2 | offentlig boolsk addAll(Samling c) | Den brukes til å sette inn de angitte samlingselementene i den påkallende samlingen. |
3 | offentlig boolesk fjern (objektelement) | Den brukes til å slette et element fra samlingen. |
4 | offentlig boolsk removeAll(Samling c) | Den brukes til å slette alle elementene i den angitte samlingen fra den påkallende samlingen. |
5 | standard boolesk removeIf(predikatfilter) | Den brukes til å slette alle elementene i samlingen som tilfredsstiller det angitte predikatet. |
6 | offentlig boolsk retainAll(Samling c) | Den brukes til å slette alle elementene i påkallende samling bortsett fra den spesifiserte samlingen. |
7 | offentlig int størrelse() | Den returnerer det totale antallet elementer i samlingen. |
8 | public void clear() | Det fjerner det totale antallet elementer fra samlingen. |
9 | offentlig boolsk inneholder(Objektelement) | Den brukes til å søke etter et element. |
10 | offentlig boolesk inneholder alle (samling c) | Den brukes til å søke i den angitte samlingen i samlingen. |
elleve | offentlig iterator iterator() | Den returnerer en iterator. |
12 | offentlig objekt[] tilArray() | Den konverterer samling til array. |
1. 3 | offentlig T[] tilArray(T[] a) | Den konverterer samling til array. Her er kjøretidstypen for den returnerte matrisen den for den angitte matrisen. |
14 | offentlig boolsk er Empty() | Den sjekker om samlingen er tom. |
femten | standard Stream parallelStream() | Den returnerer en muligens parallell strøm med samlingen som kilde. |
16 | standard strømstrøm() | Den returnerer en sekvensiell strøm med samlingen som kilde. |
17 | standard Spliterator splitterator() | Den genererer en splitter over de angitte elementene i samlingen. |
18 | offentlig boolsk lik (objektelement) | Den matcher to samlinger. |
19 | offentlig 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. | Metode | Beskrivelse |
---|---|---|
1 | offentlig boolsk hasNext() | Den returnerer sant hvis iteratoren har flere elementer ellers returnerer den usann. |
2 | offentlig objekt neste() | Den returnerer elementet og flytter markørpekeren til neste element. |
3 | public 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 VijayHva skal vi lære i Java Collections Framework
- ArrayList klasse
- LinkedList-klassen
- Listegrensesnitt
- HashSet-klassen
- LinkedHashSet-klassen
- TreeSet klasse
- Prioritetskø-klasse
- Kartgrensesnitt
- HashMap-klassen
- LinkedHashMap-klassen
- TreeMap-klassen
- Hastbar klasse
- Sortering
- Sammenlignbart grensesnitt
- Komparatorgrensesnitt
- Egenskapsklasse i Java