logo

Sammlungen in Java

  1. Java Collection Framework
  2. Hierarchie des Sammlungs-Frameworks
  3. Sammlungsschnittstelle
  4. 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:

  1. Schnittstellen und ihre Implementierungen, also Klassen
  2. 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.

Hierarchie des Java Collection-Frameworks

Methoden der Sammlungsschnittstelle

In der Collection-Schnittstelle sind viele Methoden deklariert. Sie sind wie folgt:

NEIN.MethodeBeschreibung
1öffentliches boolesches Add(E e)Es wird verwendet, um ein Element in diese Sammlung einzufügen.
2public 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.
5Standard-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ünfzehnStandard-Stream parallelStream()Es gibt einen möglicherweise parallelen Stream mit der Sammlung als Quelle zurück.
16Standard-Stream stream()Es gibt einen sequentiellen Stream mit der Sammlung als Quelle zurück.
17Standard-Splitterator-Splitterator()Es generiert einen Spliterator über die angegebenen Elemente in der Sammlung.
18öffentlicher boolescher Wert gleicht (Objektelement)Es passt zu zwei Kollektionen.
19public 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.MethodeBeschreibung
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 Vijay 
Was werden wir im Java Collections Framework lernen?
  1. ArrayList-Klasse
  2. LinkedList-Klasse
  3. Listenschnittstelle
  4. HashSet-Klasse
  5. LinkedHashSet-Klasse
  6. TreeSet-Klasse
  7. PriorityQueue-Klasse
  8. Kartenschnittstelle
  9. HashMap-Klasse
  10. LinkedHashMap-Klasse
  11. TreeMap-Klasse
  12. Hashtable-Klasse
  13. Sortierung
  14. Vergleichbare Schnittstelle
  15. Komparatorschnittstelle
  16. Properties-Klasse in Java