Det Samling i Java er en ramme, der giver en arkitektur til at gemme og manipulere gruppen af objekter.
Java Collections kan opnå alle de handlinger, du udfører på en data, såsom søgning, sortering, indsættelse, manipulation og sletning.
Java Collection betyder en enkelt enhed af objekter. Java Collection framework giver mange grænseflader (Set, List, Queue, Deque) og klasser ( ArrayList , vektor, LinkedList , Prioritetskø , HashSet, LinkedHashSet, TreeSet).
Hvad er samling i Java
En samling repræsenterer en enkelt enhed af objekter, dvs. en gruppe.
Hvad er et framework i Java
- Det giver færdiglavet arkitektur.
- Det repræsenterer et sæt klasser og grænseflader.
- Det er valgfrit.
Hvad er samlingsramme
Samlingsrammen repræsenterer en samlet arkitektur til lagring og manipulation af en gruppe af objekter. Det har:
- Grænseflader og dets implementeringer, dvs. klasser
- Algoritme
Ved du?
- Hvad er de to måder at iterere elementerne i en samling på?
- Hvad er forskellen mellem ArrayList og LinkedList klasser i samlingsramme?
- Hvad er forskellen mellem ArrayList og Vector klasser i samlingsramme?
- Hvad er forskellen mellem HashSet og HashMap klasser i samlingsramme?
- Hvad er forskellen mellem HashMap og Hashtable-klassen?
- Hvad er forskellen mellem Iterator og Enumeration interface i samlingsramme?
- Hvordan kan vi sortere elementerne i et objekt? Hvad er forskellen mellem sammenlignelige og komparatorgrænseflader?
- Hvad betyder hashcode()-metoden?
- Hvad er forskellen mellem Java-samling og Java-samlinger?
Hierarki af samlingsramme
Lad os se hierarkiet af samlingsrammen. Det java.util pakken indeholder alle klasser og grænseflader til Indsamlingsrammen.
Metoder til indsamlingsgrænseflade
Der er mange metoder erklæret i samlingsgrænsefladen. De er som følger:
Ingen. | Metode | Beskrivelse |
---|---|---|
1 | offentlig boolesk tilføjelse(E e) | Det bruges til at indsætte et element i denne samling. |
2 | offentlig boolesk addAll(Samling c) | Den bruges til at indsætte de angivne samlingselementer i den påkaldende samling. |
3 | offentlig boolesk fjern (Objektelement) | Det bruges til at slette et element fra samlingen. |
4 | public boolean removeAll(Samling c) | Det bruges til at slette alle elementer i den angivne samling fra den påkaldende samling. |
5 | standard boolesk removeIf(prædikatfilter) | Det bruges til at slette alle elementer i samlingen, der opfylder det angivne prædikat. |
6 | public boolean retainAll(Samling c) | Den bruges til at slette alle elementer i den påkaldte samling undtagen den angivne samling. |
7 | offentlig int størrelse() | Det returnerer det samlede antal elementer i samlingen. |
8 | public void clear() | Det fjerner det samlede antal elementer fra samlingen. |
9 | offentlig boolesk indeholder(Objektelement) | Det bruges til at søge efter et element. |
10 | public boolean containsAll(Samling c) | Den bruges til at søge i den angivne samling i samlingen. |
elleve | offentlig iterator iterator() | Det returnerer en iterator. |
12 | offentligt objekt[] tilArray() | Det konverterer samling til array. |
13 | offentlig T[] tilArray(T[] a) | Det konverterer samling til array. Her er runtime-typen for det returnerede array den for det angivne array. |
14 | public boolean isEmpty() | Den tjekker om samlingen er tom. |
femten | standard Stream parallelStream() | Den returnerer en muligvis parallel Stream med samlingen som kilde. |
16 | standard stream stream() | Den returnerer en sekventiel stream med samlingen som kilde. |
17 | standard Spliterator splitterator() | Det genererer en Spliterator over de angivne elementer i samlingen. |
18 | offentlig boolesk lig (objektelement) | Det matcher to samlinger. |
19 | public int hashCode() | Det returnerer samlingens hashkodenummer. |
Iterator interface
Iterator-interface giver mulighed for kun at iterere elementerne i en fremadgående retning. |
Metoder til Iterator-grænseflade
Der er kun tre metoder i Iterator-grænsefladen. De er:
Ingen. | Metode | Beskrivelse |
---|---|---|
1 | public boolean hasNext() | Den returnerer sand, hvis iteratoren har flere elementer, ellers returnerer den falsk. |
2 | offentligt objekt næste() | Det returnerer elementet og flytter markøren til det næste element. |
3 | public void remove() | Det fjerner de sidste elementer returneret af iteratoren. Den er mindre brugt. |
Iterable grænseflade
Iterable-grænsefladen er rodgrænsefladen for alle samlingsklasserne. Collection-grænsefladen udvider Iterable-grænsefladen, og derfor implementerer alle underklasser af Collection-grænsefladen også Iterable-grænsefladen.
Den indeholder kun én abstrakt metode. dvs.
Iterator iterator()
Det returnerer iteratoren over elementerne af type T.
kunstigt neurale netværk
Samling grænseflade
Samlingsgrænsefladen er den grænseflade, som er implementeret af alle klasserne i samlingsrammen. Det erklærer de metoder, som hver samling vil have. Med andre ord kan vi sige, at samlingsgrænsefladen bygger det fundament, som samlingsrammen afhænger af.
Nogle af metoderne til Collection-grænsefladen er Boolean add ( Object obj), Boolean addAll ( Collection c), void clear() osv., som er implementeret af alle underklasserne af Collection-grænsefladen.
Listegrænseflade
Listegrænsefladen er den underordnede grænseflade til samlingsgrænsefladen. Det hæmmer en listetype datastruktur, hvori vi kan gemme den ordnede samling af objekter. Det kan have duplikerede værdier.
Listegrænsefladen er implementeret af klasserne ArrayList, LinkedList, Vector og Stack.
For at instansiere List-grænsefladen skal vi bruge:
List list1= new ArrayList(); List list2 = new LinkedList(); List list3 = new Vector(); List list4 = new Stack();
Der er forskellige metoder i List-grænsefladen, der kan bruges til at indsætte, slette og få adgang til elementerne fra listen.
Klasserne, der implementerer List-grænsefladen, er angivet nedenfor.
ArrayList
ArrayList-klassen implementerer List-grænsefladen. Det bruger et dynamisk array til at gemme duplikatelementet af forskellige datatyper. ArrayList-klassen opretholder indsættelsesrækkefølgen og er ikke-synkroniseret. De elementer, der er gemt i ArrayList-klassen, kan tilgås tilfældigt. Overvej 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()); } } }
Produktion:
Ravi Vijay Ravi Ajay
LinkedList
LinkedList implementerer samlingsgrænsefladen. Den bruger en dobbelt linket liste internt til at gemme elementerne. Det kan gemme de duplikerede elementer. Den bevarer indsættelsesrækkefølgen og er ikke synkroniseret. I LinkedList er manipulationen hurtig, fordi der ikke kræves skift.
Overvej 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()); } } }
Produktion:
Ravi Vijay Ravi Ajay
Vektor
Vector bruger et dynamisk array til at gemme dataelementerne. Det ligner ArrayList. Det er dog synkroniseret og indeholder mange metoder, der ikke er en del af Collection framework.
Overvej 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()); } } }
Produktion:
Ayush Amit Ashish Garima
Stak
Stakken er underklassen af Vector. Den implementerer sidst-ind-først-ud-datastrukturen, dvs. Stack. Stakken indeholder alle metoderne i Vector-klassen og giver også dens metoder som boolean push(), boolean peek(), boolean push(objekt o), som definerer dens egenskaber.
Overvej 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()); } } }
Produktion:
Ayush Garvit Amit Ashish
Køgrænseflade
Køgrænsefladen opretholder først-ind-først-ud-rækkefølgen. Det kan defineres som en ordnet liste, der bruges til at indeholde de elementer, der er ved at blive behandlet. Der er forskellige klasser som PriorityQueue, Deque og ArrayDeque, som implementerer Queue-grænsefladen.
Køgrænseflade kan instansieres som:
Queue q1 = new PriorityQueue(); Queue q2 = new ArrayDeque();
Der er forskellige klasser, der implementerer Queue-grænsefladen, nogle af dem er givet nedenfor.
Prioritetskø
PriorityQueue-klassen implementerer Queue-grænsefladen. Det indeholder de elementer eller objekter, der skal behandles efter deres prioriteter. PriorityQueue tillader ikke, at null-værdier gemmes i køen.
Overvej 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()); } } }
Produktion:
head:Amit Sharma head:Amit Sharma iterating the queue elements: Amit Sharma Raj JaiShankar Vijay Raj after removing two elements: Raj Vijay Raj
Og grænsefladen
Deque-grænsefladen udvider kø-grænsefladen. I Deque kan vi fjerne og tilføje elementerne fra begge sider. Deque står for en dobbeltkø, som gør det muligt for os at udføre operationerne i begge ender.
Deque kan instansieres som:
Deque d = new ArrayDeque();
ArrayDeque
ArrayDeque-klassen implementerer Deque-grænsefladen. Det letter os at bruge Deque. I modsætning til kø kan vi tilføje eller slette elementerne fra begge ender.
ArrayDeque er hurtigere end ArrayList og Stack og har ingen kapacitetsbegrænsninger.
Overvej 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); } } }
Produktion:
Gautam Karan Ajay
Indstil grænseflade
Set Interface i Java er til stede i java.util-pakken. Det udvider samlingsgrænsefladen. Det repræsenterer det uordnede sæt af elementer, som ikke tillader os at gemme de duplikerede elementer. Vi kan højst gemme én null-værdi i Set. Set er implementeret af HashSet, LinkedHashSet og TreeSet.
Sættet kan instansieres som:
Set s1 = new HashSet(); Set s2 = new LinkedHashSet(); Set s3 = new TreeSet();
HashSet
HashSet-klassen implementerer Set Interface. Det repræsenterer den samling, der bruger en hash-tabel til opbevaring. Hashing bruges til at gemme elementerne i HashSet. Den indeholder unikke genstande.
Overvej 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()); } } }
Produktion:
Vijay Ravi Ajay
LinkedHashSet
LinkedHashSet-klassen repræsenterer LinkedList-implementeringen af Set Interface. Det udvider HashSet-klassen og implementerer Set-grænsefladen. Ligesom HashSet indeholder det også unikke elementer. Den bevarer indsættelsesrækkefølgen og tillader null-elementer.
Overvej 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()); } } }
Produktion:
Ravi Vijay Ajay
SortedSet Interface
SortedSet er alternativet af Set-grænsefladen, der giver en samlet rækkefølge på dets elementer. Elementerne i SortedSet er arrangeret i stigende (stigende) rækkefølge. SortedSet giver de yderligere metoder, der hæmmer den naturlige orden af elementerne.
SortedSet kan instansieres som:
SortedSet set = new TreeSet();
Træsæt
Java TreeSet-klassen implementerer Set-grænsefladen, der bruger et træ til opbevaring. Ligesom HashSet indeholder TreeSet også unikke elementer. Adgangs- og genfindingstiden for TreeSet er dog ret hurtig. Elementerne i TreeSet gemt i stigende rækkefølge.
Overvej 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()); } } }
Produktion:
Ajay Ravi VijayHvad skal vi lære i Java Collections Framework
- ArrayList klasse
- LinkedList klasse
- Listegrænseflade
- HashSet klasse
- LinkedHashSet klasse
- TreeSet klasse
- PriorityQueue klasse
- Kort interface
- HashMap klasse
- LinkedHashMap klasse
- TreeMap klasse
- Hastable klasse
- Sortering
- Sammenlignelig grænseflade
- Komparator interface
- Egenskabsklasse i Java