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:
- Gränssnitt och dess implementeringar, dvs klasser
- 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.
Gränssnitt för insamlingsmetoder
Det finns många metoder som deklareras i samlingsgränssnittet. De är följande:
Nej. | Metod | Beskrivning |
---|---|---|
1 | public boolean add(E e) | Den används för att infoga ett element i denna samling. |
2 | public boolean addAll(Collection c) | Den används för att infoga de angivna samlingselementen i den anropande samlingen. |
3 | public boolean remove(Object element) | Den används för att ta bort ett element från samlingen. |
4 | public boolean removeAll(Collection c) | Den används för att ta bort alla element i den angivna samlingen från den anropande samlingen. |
5 | standard boolesk removeIf(Predikatfilter) | Den används för att ta bort alla element i samlingen som uppfyller det angivna predikatet. |
6 | public boolean retainAll(samling c) | Den används för att ta bort alla element i anropande samling förutom den angivna samlingen. |
7 | public int size() | Det returnerar det totala antalet element i samlingen. |
8 | public void clear() | Det tar bort det totala antalet element från samlingen. |
9 | public boolean contains(Object element) | Den används för att söka efter ett element. |
10 | public boolean containsAll(samling c) | Den används för att söka i den angivna samlingen i samlingen. |
elva | public Iterator iterator() | Den returnerar en iterator. |
12 | public Object[] toArray() | Det konverterar samling till array. |
13 | public 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. |
14 | public boolean isEmpty() | Den kontrollerar om samlingen är tom. |
femton | standardström parallellStream() | Den returnerar en möjligen parallell ström med samlingen som källa. |
16 | standardströmström() | Den returnerar en sekventiell ström med samlingen som källa. |
17 | default Spliterator spliterator() | Den genererar en Spliterator över de angivna elementen i samlingen. |
18 | offentlig boolesk lika med (objektelement) | Den matchar två samlingar. |
19 | public 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. | Metod | Beskrivning |
---|---|---|
1 | public boolean hasNext() | Den returnerar sant om iteratorn har fler element annars returnerar den falskt. |
2 | public Object next() | Den returnerar elementet och flyttar markörpekaren till nästa element. |
3 | public 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 VijayVad ska vi lära oss i Java Collections Framework
- ArrayList klass
- LinkedList-klass
- Listgränssnitt
- HashSet-klass
- LinkedHashSet-klass
- TreeSet-klass
- PriorityQueue-klass
- Kartgränssnitt
- HashMap klass
- LinkedHashMap-klass
- TreeMap klass
- Hastbar klass
- Sortering
- Jämförbart gränssnitt
- Jämförelsegränssnitt
- Egenskapsklass i Java