logo

Samlingar i Java

  1. Java Collection Framework
  2. Hierarki av samlingsram
  3. Samlingsgränssnitt
  4. Iterator-gränssnitt

De Samling i Java är ett ramverk som tillhandahåller en arkitektur för att lagra och manipulera gruppen av objekt.

Java Collections kan utföra alla operationer som du utför på en data som sökning, sortering, infogning, manipulation och radering.

Java Collection betyder en enda enhet av objekt. Java Collection-ramverket tillhandahåller många gränssnitt (Set, List, Queue, Deque) och klasser ( ArrayList , Vektor, Länkad lista , Prioritetskö , HashSet, LinkedHashSet, TreeSet).

Vad är samling i Java

En samling representerar en enda enhet av objekt, det vill säga en grupp.

Vad är ett ramverk i Java

  • Det ger färdig arkitektur.
  • Det representerar en uppsättning klasser och gränssnitt.
  • Det är valfritt.

Vad är Collection framework

Samlingsramverket representerar en enhetlig arkitektur för att lagra och manipulera en grupp objekt. Det har:

  1. Gränssnitt och dess implementeringar, dvs klasser
  2. Algoritm

Vet du?
  • Vilka är de två sätten att iterera elementen i en samling?
  • Vad är skillnaden mellan ArrayList och LinkedList klasser i samlingsramverket?
  • Vad är skillnaden mellan ArrayList och Vector klasser i samlingsramverket?
  • Vad är skillnaden mellan HashSet- och HashMap-klasser i samlingsramverket?
  • Vad är skillnaden mellan HashMap och Hashtable-klassen?
  • Vad är skillnaden mellan Iterator- och Enumeration-gränssnittet i samlingsramverket?
  • Hur kan vi sortera elementen i ett objekt? Vad är skillnaden mellan jämförbara och jämförbara gränssnitt?
  • Vad innebär hashcode()-metoden?
  • Vad är skillnaden mellan Java-samling och Java-samling?

Hierarki av samlingsram

Låt oss se hierarkin för samlingsramverket. De java.util paketet innehåller alla klasser och gränssnitt för insamlingsramen.

Hierarki av Java Collection-ramverket

Gränssnitt för insamlingsmetoder

Det finns många metoder som deklareras i samlingsgränssnittet. De är följande:

Nej.MetodBeskrivning
1public boolean add(E e)Den används för att infoga ett element i denna samling.
2public boolean addAll(Collection c)Den används för att infoga de angivna samlingselementen i den anropande samlingen.
3public boolean remove(Object element)Den används för att ta bort ett element från samlingen.
4public boolean removeAll(Collection c)Den används för att ta bort alla element i den angivna samlingen från den anropande samlingen.
5standard boolesk removeIf(Predikatfilter)Den används för att ta bort alla element i samlingen som uppfyller det angivna predikatet.
6public boolean retainAll(samling c)Den används för att ta bort alla element i anropande samling förutom den angivna samlingen.
7public int size()Det returnerar det totala antalet element i samlingen.
8public void clear()Det tar bort det totala antalet element från samlingen.
9public boolean contains(Object element)Den används för att söka efter ett element.
10public boolean containsAll(samling c)Den används för att söka i den angivna samlingen i samlingen.
elvapublic Iterator iterator()Den returnerar en iterator.
12public Object[] toArray()Det konverterar samling till array.
13public T[] toArray(T[] a)Det konverterar samling till array. Här är körtidstypen för den returnerade arrayen den för den angivna arrayen.
14public boolean isEmpty()Den kontrollerar om samlingen är tom.
femtonstandardström parallellStream()Den returnerar en möjligen parallell ström med samlingen som källa.
16standardströmström()Den returnerar en sekventiell ström med samlingen som källa.
17default Spliterator spliterator()Den genererar en Spliterator över de angivna elementen i samlingen.
18offentlig boolesk lika med (objektelement)Den matchar två samlingar.
19public int hashCode()Den returnerar samlingens hashkodnummer.

Iterator-gränssnitt

Iteratorgränssnitt ger möjligheten att iterera elementen endast i framåtriktning.

Metoder för Iterator-gränssnitt

Det finns bara tre metoder i Iterator-gränssnittet. Dom är:

Nej.MetodBeskrivning
1public boolean hasNext()Den returnerar sant om iteratorn har fler element annars returnerar den falskt.
2public Object next()Den returnerar elementet och flyttar markörpekaren till nästa element.
3public void remove()Den tar bort de sista elementen som returneras av iteratorn. Den är mindre använd.

Iterable gränssnitt

Iterable-gränssnittet är rotgränssnittet för alla samlingsklasser. Collection-gränssnittet utökar Iterable-gränssnittet och därför implementerar alla underklasser av Collection-gränssnittet också Iterable-gränssnittet.

Den innehåller bara en abstrakt metod. dvs.

 Iterator iterator() 

Den returnerar iteratorn över elementen av typ T.

testning och typer av testning

Insamlingsgränssnitt

Samlingsgränssnittet är det gränssnitt som implementeras av alla klasser i samlingsramverket. Den förklarar de metoder som varje samling kommer att ha. Med andra ord kan vi säga att samlingsgränssnittet bygger den grund som samlingsramverket beror på.

Några av metoderna för samlingsgränssnittet är Boolean add ( Object obj), Boolean addAll ( Collection c), void clear(), etc. som implementeras av alla underklasser av Collection interface.


Listgränssnitt

Listgränssnittet är det underordnade gränssnittet för samlingsgränssnittet. Det förhindrar en datastruktur av listtyp där vi kan lagra den ordnade samlingen av objekt. Det kan ha dubbletter av värden.

Listgränssnittet implementeras av klasserna ArrayList, LinkedList, Vector och Stack.

För att instansiera List-gränssnittet måste vi använda:

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

Det finns olika metoder i List-gränssnittet som kan användas för att infoga, ta bort och komma åt elementen från listan.

Klasserna som implementerar List-gränssnittet ges nedan.


ArrayList

Klassen ArrayList implementerar List-gränssnittet. Den använder en dynamisk array för att lagra dubblettelementet av olika datatyper. Klassen ArrayList upprätthåller insättningsordningen och är osynkroniserad. Elementen lagrade i klassen ArrayList kan nås slumpmässigt. Betrakta följande exempel.

 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 

Länkad lista

LinkedList implementerar samlingsgränssnittet. Den använder en dubbelt länkad lista internt för att lagra elementen. Den kan lagra dubblettelementen. Den behåller insättningsordningen och är inte synkroniserad. I LinkedList är manipulationen snabb eftersom ingen växling krävs.

Betrakta följande exempel.

 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 använder en dynamisk array för att lagra dataelementen. Det liknar ArrayList. Det är dock synkroniserat och innehåller många metoder som inte är en del av samlingsramverket.

Betrakta följande exempel.

 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 

Stack

Stacken är underklassen till Vector. Den implementerar sist-in-först-ut-datastrukturen, dvs Stack. Stacken innehåller alla metoder i klassen Vector och tillhandahåller också sina metoder som boolean push(), boolean peek(), boolean push(objekt o), som definierar dess egenskaper.

Betrakta följande exempel.

 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änssnitt

Kögränssnittet upprätthåller först-in-först-ut-ordningen. Den kan definieras som en ordnad lista som används för att innehålla de element som är på väg att bearbetas. Det finns olika klasser som PriorityQueue, Deque och ArrayDeque som implementerar Queue-gränssnittet.

Kögränssnitt kan instansieras som:

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

Det finns olika klasser som implementerar Queue-gränssnittet, några av dem ges nedan.


Prioritetskö

Klassen PriorityQueue implementerar Queue-gränssnittet. Den innehåller de element eller objekt som ska behandlas av deras prioriteringar. PriorityQueue tillåter inte att null-värden lagras i kön.

Betrakta följande exempel.

 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 

Och gränssnittet

Deque-gränssnittet utökar kögränssnittet. I Deque kan vi ta bort och lägga till elementen från båda sidorna. Deque står för en dubbeländad kö som gör att vi kan utföra operationerna i båda ändarna.

Deque kan instansieras som:

 Deque d = new ArrayDeque(); 

ArrayDeque

ArrayDeque-klassen implementerar Deque-gränssnittet. Det underlättar för oss att använda Deque. Till skillnad från kö kan vi lägga till eller ta bort elementen från båda ändarna.

ArrayDeque är snabbare än ArrayList och Stack och har inga kapacitetsbegränsningar.

Betrakta följande exempel.

 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 

Ställ in gränssnitt

Set Interface i Java finns i java.util-paketet. Det utökar samlingsgränssnittet. Det representerar den oordnade uppsättningen av element som inte tillåter oss att lagra dubblettobjekten. Vi kan lagra högst ett nollvärde i Set. Set implementeras av HashSet, LinkedHashSet och TreeSet.

Uppsättningen kan instansieras som:

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

HashSet

HashSet-klassen implementerar Set Interface. Det representerar samlingen som använder en hashtabell för lagring. Hashing används för att lagra elementen i HashSet. Den innehåller unika föremål.

Betrakta följande exempel.

 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 representerar LinkedList-implementeringen av Set Interface. Den utökar HashSet-klassen och implementerar Set-gränssnittet. Liksom HashSet innehåller den också unika element. Den bibehåller insättningsordningen och tillåter null-element.

Betrakta följande exempel.

 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 är alternativen till Set-gränssnittet som ger en total ordning på dess element. Elementen i SortedSet är ordnade i ökande (stigande) ordning. SortedSet tillhandahåller ytterligare metoder som hämmar den naturliga ordningen av elementen.

SortedSet kan instansieras som:

 SortedSet set = new TreeSet(); 

Träduppsättning

Java TreeSet-klassen implementerar Set-gränssnittet som använder ett träd för lagring. Liksom HashSet innehåller TreeSet också unika element. Åtkomst- och hämtningstiden för TreeSet är dock ganska snabb. Elementen i TreeSet lagras i stigande ordning.

Tänk på följande exempel:

 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 
Vad ska vi lära oss i Java Collections Framework
  1. ArrayList klass
  2. LinkedList-klass
  3. Listgränssnitt
  4. HashSet-klass
  5. LinkedHashSet-klass
  6. TreeSet-klass
  7. PriorityQueue-klass
  8. Kartgränssnitt
  9. HashMap klass
  10. LinkedHashMap-klass
  11. TreeMap klass
  12. Hastbar klass
  13. Sortering
  14. Jämförbart gränssnitt
  15. Jämförelsegränssnitt
  16. Egenskapsklass i Java