logo

Samlinger i Java

  1. Java Collection Framework
  2. Hierarki af samlingsramme
  3. Samling grænseflade
  4. Iterator interface

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:

  1. Grænseflader og dets implementeringer, dvs. klasser
  2. 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.

Hierarki af Java Collection framework

Metoder til indsamlingsgrænseflade

Der er mange metoder erklæret i samlingsgrænsefladen. De er som følger:

Ingen.MetodeBeskrivelse
1offentlig boolesk tilføjelse(E e)Det bruges til at indsætte et element i denne samling.
2offentlig boolesk addAll(Samling c)Den bruges til at indsætte de angivne samlingselementer i den påkaldende samling.
3offentlig boolesk fjern (Objektelement)Det bruges til at slette et element fra samlingen.
4public boolean removeAll(Samling c)Det bruges til at slette alle elementer i den angivne samling fra den påkaldende samling.
5standard boolesk removeIf(prædikatfilter)Det bruges til at slette alle elementer i samlingen, der opfylder det angivne prædikat.
6public boolean retainAll(Samling c)Den bruges til at slette alle elementer i den påkaldte samling undtagen den angivne samling.
7offentlig int størrelse()Det returnerer det samlede antal elementer i samlingen.
8public void clear()Det fjerner det samlede antal elementer fra samlingen.
9offentlig boolesk indeholder(Objektelement)Det bruges til at søge efter et element.
10public boolean containsAll(Samling c)Den bruges til at søge i den angivne samling i samlingen.
elleveoffentlig iterator iterator()Det returnerer en iterator.
12offentligt objekt[] tilArray()Det konverterer samling til array.
13offentlig T[] tilArray(T[] a)Det konverterer samling til array. Her er runtime-typen for det returnerede array den for det angivne array.
14public boolean isEmpty()Den tjekker om samlingen er tom.
femtenstandard Stream parallelStream()Den returnerer en muligvis parallel Stream med samlingen som kilde.
16standard stream stream()Den returnerer en sekventiel stream med samlingen som kilde.
17standard Spliterator splitterator()Det genererer en Spliterator over de angivne elementer i samlingen.
18offentlig boolesk lig (objektelement)Det matcher to samlinger.
19public 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.MetodeBeskrivelse
1public boolean hasNext()Den returnerer sand, hvis iteratoren har flere elementer, ellers returnerer den falsk.
2offentligt objekt næste()Det returnerer elementet og flytter markøren til det næste element.
3public 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 Vijay 
Hvad skal vi lære i Java Collections Framework
  1. ArrayList klasse
  2. LinkedList klasse
  3. Listegrænseflade
  4. HashSet klasse
  5. LinkedHashSet klasse
  6. TreeSet klasse
  7. PriorityQueue klasse
  8. Kort interface
  9. HashMap klasse
  10. LinkedHashMap klasse
  11. TreeMap klasse
  12. Hastable klasse
  13. Sortering
  14. Sammenlignelig grænseflade
  15. Komparator interface
  16. Egenskabsklasse i Java