- Java Collection Framework
- Hierarchie des Sammlungs-Frameworks
- Sammlungsschnittstelle
- Iterator-Schnittstelle
Der Sammlung in Java ist ein Framework, das eine Architektur zum Speichern und Bearbeiten der Gruppe von Objekten bereitstellt.
Java-Sammlungen können alle Vorgänge ausführen, die Sie an Daten ausführen, z. B. Suchen, Sortieren, Einfügen, Bearbeiten und Löschen.
Unter Java Collection versteht man eine einzelne Objekteinheit. Das Java Collection-Framework bietet viele Schnittstellen (Set, List, Queue, Deque) und Klassen ( Anordnungsliste , Vektor, LinkedList , Prioritätswarteschlange , HashSet, LinkedHashSet, TreeSet).
Was ist Sammlung in Java?
Eine Sammlung stellt eine einzelne Einheit von Objekten dar, also eine Gruppe.
Was ist ein Framework in Java?
- Es bietet fertige Architektur.
- Es stellt eine Reihe von Klassen und Schnittstellen dar.
- Es ist optional.
Was ist das Collection-Framework?
Das Collection-Framework stellt eine einheitliche Architektur zum Speichern und Bearbeiten einer Gruppe von Objekten dar. Es hat:
- Schnittstellen und ihre Implementierungen, also Klassen
- Algorithmus
Wissen Sie?
- Welche zwei Möglichkeiten gibt es, die Elemente einer Sammlung zu iterieren?
- Was ist der Unterschied zwischen den Klassen ArrayList und LinkedList im Sammlungsframework?
- Was ist der Unterschied zwischen ArrayList- und Vector-Klassen im Sammlungsframework?
- Was ist der Unterschied zwischen HashSet- und HashMap-Klassen im Sammlungsframework?
- Was ist der Unterschied zwischen der HashMap- und der Hashtable-Klasse?
- Was ist der Unterschied zwischen der Iterator- und der Enumeration-Schnittstelle im Collection-Framework?
- Wie können wir die Elemente eines Objekts sortieren? Was ist der Unterschied zwischen Comparable- und Comparator-Schnittstellen?
- Was bedeutet die Methode hashcode()?
- Was ist der Unterschied zwischen Java-Sammlung und Java-Sammlungen?
Hierarchie des Sammlungs-Frameworks
Sehen wir uns die Hierarchie des Collection-Frameworks an. Der java.util Das Paket enthält alles Klassen Und Schnittstellen für das Collection-Framework.
Methoden der Sammlungsschnittstelle
In der Collection-Schnittstelle sind viele Methoden deklariert. Sie sind wie folgt:
NEIN. | Methode | Beschreibung |
---|---|---|
1 | öffentliches boolesches Add(E e) | Es wird verwendet, um ein Element in diese Sammlung einzufügen. |
2 | public boolean addAll(Collection c) | Es wird verwendet, um die angegebenen Sammlungselemente in die aufrufende Sammlung einzufügen. |
3 | öffentlicher boolescher Wert zum Entfernen (Objektelement) | Es wird verwendet, um ein Element aus der Sammlung zu löschen. |
4 | öffentlicher boolescher Wert „removeAll“ (Sammlung c) | Es wird verwendet, um alle Elemente der angegebenen Sammlung aus der aufrufenden Sammlung zu löschen. |
5 | Standard-Boolean-RemoveIf(Prädikatfilter) | Es wird verwendet, um alle Elemente der Sammlung zu löschen, die das angegebene Prädikat erfüllen. |
6 | öffentlicher boolescher Wert „retainAll“ (Sammlung c) | Es wird verwendet, um alle Elemente der aufrufenden Sammlung außer der angegebenen Sammlung zu löschen. |
7 | öffentliche int-Größe() | Es gibt die Gesamtzahl der Elemente in der Sammlung zurück. |
8 | öffentliche Leere klar() | Es entfernt die Gesamtzahl der Elemente aus der Sammlung. |
9 | öffentlicher boolescher Wert enthält (Objektelement) | Es wird verwendet, um ein Element zu suchen. |
10 | öffentlicher boolescher Wert enthältAlle (Sammlung c) | Es wird verwendet, um die angegebene Sammlung in der Sammlung zu durchsuchen. |
elf | öffentlicher Iterator iterator() | Es gibt einen Iterator zurück. |
12 | öffentliches Objekt[] toArray() | Es wandelt eine Sammlung in ein Array um. |
13 | öffentliches T[] toArray(T[] a) | Es wandelt eine Sammlung in ein Array um. Hier ist der Laufzeittyp des zurückgegebenen Arrays der des angegebenen Arrays. |
14 | öffentlicher boolescher Wert isEmpty() | Es prüft, ob die Sammlung leer ist. |
fünfzehn | Standard-Stream parallelStream() | Es gibt einen möglicherweise parallelen Stream mit der Sammlung als Quelle zurück. |
16 | Standard-Stream stream() | Es gibt einen sequentiellen Stream mit der Sammlung als Quelle zurück. |
17 | Standard-Splitterator-Splitterator() | Es generiert einen Spliterator über die angegebenen Elemente in der Sammlung. |
18 | öffentlicher boolescher Wert gleicht (Objektelement) | Es passt zu zwei Kollektionen. |
19 | public int hashCode() | Es gibt die Hash-Code-Nummer der Sammlung zurück. |
Iterator-Schnittstelle
Die Iterator-Schnittstelle bietet die Möglichkeit, die Elemente nur in Vorwärtsrichtung zu iterieren. |
Methoden der Iterator-Schnittstelle
In der Iterator-Schnittstelle gibt es nur drei Methoden. Sie sind:
NEIN. | Methode | Beschreibung |
---|---|---|
1 | öffentlicher boolescher Wert hasNext() | Es gibt „true“ zurück, wenn der Iterator mehr Elemente hat, andernfalls gibt es „false“ zurück. |
2 | öffentliches Objekt next() | Es gibt das Element zurück und bewegt den Cursorzeiger zum nächsten Element. |
3 | öffentliche Leere entfernen() | Es entfernt die letzten vom Iterator zurückgegebenen Elemente. Es wird weniger genutzt. |
Iterierbare Schnittstelle
Die Iterable-Schnittstelle ist die Stammschnittstelle für alle Sammlungsklassen. Die Collection-Schnittstelle erweitert die Iterable-Schnittstelle und daher implementieren alle Unterklassen der Collection-Schnittstelle auch die Iterable-Schnittstelle.
Es enthält nur eine abstrakte Methode. d.h.,
Iterator iterator()
Es gibt den Iterator über die Elemente vom Typ T zurück.
js mehrzeilige Zeichenfolge
Sammlungsschnittstelle
Die Collection-Schnittstelle ist die Schnittstelle, die von allen Klassen im Collection-Framework implementiert wird. Es deklariert die Methoden, die jede Sammlung haben wird. Mit anderen Worten können wir sagen, dass die Collection-Schnittstelle die Grundlage bildet, auf der das Collection-Framework basiert.
Einige der Methoden der Collection-Schnittstelle sind Boolean add (Object obj), Boolean addAll (Collection c), void clear() usw., die von allen Unterklassen der Collection-Schnittstelle implementiert werden.
Listenschnittstelle
Die Listenschnittstelle ist die untergeordnete Schnittstelle der Sammlungsschnittstelle. Es verhindert eine Datenstruktur vom Typ Liste, in der wir die geordnete Sammlung von Objekten speichern können. Es kann doppelte Werte haben.
Die Listenschnittstelle wird durch die Klassen ArrayList, LinkedList, Vector und Stack implementiert.
Um die List-Schnittstelle zu instanziieren, müssen wir Folgendes verwenden:
List list1= new ArrayList(); List list2 = new LinkedList(); List list3 = new Vector(); List list4 = new Stack();
In der Listenschnittstelle gibt es verschiedene Methoden, mit denen Elemente in die Liste eingefügt, gelöscht und darauf zugegriffen werden kann.
Die Klassen, die die List-Schnittstelle implementieren, sind unten aufgeführt.
Anordnungsliste
Die ArrayList-Klasse implementiert die List-Schnittstelle. Es verwendet ein dynamisches Array, um das doppelte Element verschiedener Datentypen zu speichern. Die ArrayList-Klasse behält die Einfügereihenfolge bei und ist nicht synchronisiert. Auf die in der ArrayList-Klasse gespeicherten Elemente kann wahlfrei zugegriffen werden. Betrachten Sie das folgende Beispiel.
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()); } } }
Ausgabe:
Ravi Vijay Ravi Ajay
LinkedList
LinkedList implementiert die Collection-Schnittstelle. Es verwendet intern eine doppelt verknüpfte Liste, um die Elemente zu speichern. Es kann die doppelten Elemente speichern. Es behält die Einfügungsreihenfolge bei und wird nicht synchronisiert. In LinkedList erfolgt die Bearbeitung schnell, da keine Verschiebung erforderlich ist.
Betrachten Sie das folgende Beispiel.
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()); } } }
Ausgabe:
Ravi Vijay Ravi Ajay
Vektor
Vector verwendet ein dynamisches Array zum Speichern der Datenelemente. Es ähnelt ArrayList. Es ist jedoch synchronisiert und enthält viele Methoden, die nicht Teil des Collection-Frameworks sind.
Betrachten Sie das folgende Beispiel.
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()); } } }
Ausgabe:
Ayush Amit Ashish Garima
Stapel
Der Stapel ist die Unterklasse von Vector. Es implementiert die Last-In-First-Out-Datenstruktur, d. h. Stack. Der Stapel enthält alle Methoden der Vector-Klasse und stellt auch deren Methoden wie boolean push(), boolean peek() und boolean push(object o) bereit, die ihre Eigenschaften definieren.
Betrachten Sie das folgende Beispiel.
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()); } } }
Ausgabe:
Ayush Garvit Amit Ashish
Warteschlangenschnittstelle
Die Warteschlangenschnittstelle behält die First-In-First-Out-Reihenfolge bei. Sie kann als geordnete Liste definiert werden, die zur Aufnahme der zu verarbeitenden Elemente verwendet wird. Es gibt verschiedene Klassen wie PriorityQueue, Deque und ArrayDeque, die die Queue-Schnittstelle implementieren.
Die Warteschlangenschnittstelle kann wie folgt instanziiert werden:
Queue q1 = new PriorityQueue(); Queue q2 = new ArrayDeque();
Es gibt verschiedene Klassen, die die Queue-Schnittstelle implementieren. Einige davon sind unten aufgeführt.
Prioritätswarteschlange
Die PriorityQueue-Klasse implementiert die Queue-Schnittstelle. Es enthält die Elemente oder Objekte, die nach ihrer Priorität verarbeitet werden sollen. PriorityQueue lässt nicht zu, dass Nullwerte in der Warteschlange gespeichert werden.
Betrachten Sie das folgende Beispiel.
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()); } } }
Ausgabe:
head:Amit Sharma head:Amit Sharma iterating the queue elements: Amit Sharma Raj JaiShankar Vijay Raj after removing two elements: Raj Vijay Raj
Und die Schnittstelle
Die Deque-Schnittstelle erweitert die Queue-Schnittstelle. In Deque können wir die Elemente von beiden Seiten entfernen und hinzufügen. Deque steht für eine doppelendige Warteschlange, die es uns ermöglicht, die Operationen an beiden Enden auszuführen.
Deque kann wie folgt instanziiert werden:
Deque d = new ArrayDeque();
ArrayDeque
Die ArrayDeque-Klasse implementiert die Deque-Schnittstelle. Es erleichtert uns die Nutzung des Deque. Im Gegensatz zur Warteschlange können wir die Elemente an beiden Enden hinzufügen oder löschen.
ArrayDeque ist schneller als ArrayList und Stack und unterliegt keinen Kapazitätsbeschränkungen.
Betrachten Sie das folgende Beispiel.
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); } } }
Ausgabe:
Gautam Karan Ajay
Schnittstelle festlegen
Set Interface in Java ist im Paket java.util vorhanden. Es erweitert die Collection-Schnittstelle. Es stellt die ungeordnete Menge von Elementen dar, die es uns nicht erlaubt, die doppelten Elemente zu speichern. Wir können höchstens einen Nullwert in Set speichern. Set wird durch HashSet, LinkedHashSet und TreeSet implementiert.
Set kann wie folgt instanziiert werden:
Set s1 = new HashSet(); Set s2 = new LinkedHashSet(); Set s3 = new TreeSet();
HashSet
Die HashSet-Klasse implementiert die Set-Schnittstelle. Es stellt die Sammlung dar, die eine Hash-Tabelle zur Speicherung verwendet. Hashing wird verwendet, um die Elemente im HashSet zu speichern. Es enthält einzigartige Gegenstände.
Betrachten Sie das folgende Beispiel.
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()); } } }
Ausgabe:
Vijay Ravi Ajay
LinkedHashSet
Die LinkedHashSet-Klasse repräsentiert die LinkedList-Implementierung von Set Interface. Es erweitert die HashSet-Klasse und implementiert die Set-Schnittstelle. Wie HashSet enthält es auch eindeutige Elemente. Es behält die Einfügereihenfolge bei und lässt Nullelemente zu.
Betrachten Sie das folgende Beispiel.
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()); } } }
Ausgabe:
Ravi Vijay Ajay
SortedSet-Schnittstelle
SortedSet ist die Alternative zur Set-Schnittstelle, die eine Gesamtordnung ihrer Elemente bereitstellt. Die Elemente des SortedSet sind in aufsteigender Reihenfolge angeordnet. Das SortedSet stellt die zusätzlichen Methoden bereit, die die natürliche Reihenfolge der Elemente verhindern.
Das SortedSet kann wie folgt instanziiert werden:
SortedSet set = new TreeSet();
TreeSet
Die Java TreeSet-Klasse implementiert die Set-Schnittstelle, die einen Baum zur Speicherung verwendet. Wie HashSet enthält auch TreeSet eindeutige Elemente. Allerdings ist die Zugriffs- und Abrufzeit von TreeSet recht schnell. Die Elemente in TreeSet werden in aufsteigender Reihenfolge gespeichert.
Betrachten Sie das folgende Beispiel:
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()); } } }
Ausgabe:
Ajay Ravi VijayWas werden wir im Java Collections Framework lernen?
- ArrayList-Klasse
- LinkedList-Klasse
- Listenschnittstelle
- HashSet-Klasse
- LinkedHashSet-Klasse
- TreeSet-Klasse
- PriorityQueue-Klasse
- Kartenschnittstelle
- HashMap-Klasse
- LinkedHashMap-Klasse
- TreeMap-Klasse
- Hashtable-Klasse
- Sortierung
- Vergleichbare Schnittstelle
- Komparatorschnittstelle
- Properties-Klasse in Java