Einführung
Tupel sind eine Datenstruktur, die Daten verschiedener Typen in einer geordneten Sequenz speichern kann. Java bietet keine Tupel-Datenstruktur, aber wir können Bibliotheken wie Java tuples verwenden, um damit zu arbeiten.
💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken
Tupel sind eine Datenstruktur, die Daten verschiedener Typen in einer geordneten Sequenz speichern kann. Java bietet keine Tupel-Datenstruktur, aber wir können Bibliotheken wie Java tuples verwenden, um damit zu arbeiten.
Das Erstellen eines Tupels in Java ist einfach. Sie können ein neues Tupel erstellen, indem Sie die Datentypen der Elemente und ihre Werte angeben. Zum Beispiel:
import org.javatuples.*;
public class TupleDemo {
public static void main(String[] args) {
Triplet<String, Double, Integer> tuple = Triplet.with("Hello", 3.14, 42);
System.out.println(tuple);
}
}
In diesem Beispiel erstellen wir ein neues Triplet
-Tupel, das ein String
-, Double
- und Integer
-Element enthält. Anschließend verwenden wir die with()
-Methode, um die Werte der Elemente festzulegen und das Tupel auf der Konsole auszugeben.
Sie können in Java auf die Werte eines Tupels zugreifen, indem Sie entweder die Methoden getValue()
oder getValueX()
verwenden, wobei X
der Index des Elements ist, auf das Sie zugreifen möchten. Die Methode getValue()
ist nicht typsicher, daher müssen Sie den Wert in den richtigen Datentyp umwandeln. Die Methode getValueX()
hingegen ist typsicher und erfordert keine Umwandlung.
import org.javatuples.*;
public class TupleDemo {
public static void main(String[] args) {
Triplet<String, Double, Integer> tuple = Triplet.with("Hello", 3.14, 42);
// Access values using getValue()
Integer value1 = (Integer)tuple.getValue(2);
Double value2 = (Double)tuple.getValue(1);
String value3 = (String)tuple.getValue(0);
// Access values using getValueX()
Integer value4 = tuple.getValue2();
Double value5 = tuple.getValue1();
String value6 = tuple.getValue0();
System.out.println(value1 + " " + value2 + " " + value3);
System.out.println(value4 + " " + value5 + " " + value6);
}
}
In diesem Beispiel verwenden wir sowohl getValue()
als auch getValueX()
, um auf die Werte des Triplet
-Tupels zuzugreifen. Anschließend geben wir die Werte auf der Konsole aus.
Tupel sind unveränderlich (immutable), daher können Sie sie nicht direkt ändern. Stattdessen können Sie die Methode setAtX()
verwenden, um ein neues Tupel mit dem geänderten Wert zu erstellen. Die Methode setAtX()
gibt ein neues Tupel zurück, daher stellen Sie sicher, dass Sie es einer Variablen zuweisen.
import org.javatuples.*;
public class TupleDemo {
public static void main(String[] args) {
Triplet<String, Double, Integer> tuple = Triplet.with("Hello", 3.14, 42);
Triplet<String, Double, Integer> newTuple = tuple.setAt1(2.71);
System.out.println(tuple);
System.out.println(newTuple);
}
}
In diesem Beispiel verwenden wir die Methode setAt1()
, um das zweite Element des Triplet
-Tupels zu ändern. Anschließend geben wir sowohl das ursprüngliche als auch das geänderte Tupel auf der Konsole aus.
Sie können in Java Elemente zu einem Tupel hinzufügen, indem Sie ein neues Tupel größerer Größe erstellen, das die neuen Elemente enthält. Sie können die Methode add()
verwenden, um ein Element am Ende des Tupels hinzuzufügen, oder die Methode addAtX()
, um ein Element an einem bestimmten Index einzufügen.
import org.javatuples.*;
public class TupleDemo {
public static void main(String[] args) {
Triplet<String, Double, Integer> tuple = Triplet.with("Hello", 3.14, 42);
Quartet<String, Double, Integer, Boolean> newTuple1 = tuple.add(true);
Quartet<String, Double, Boolean, Integer> newTuple2 = tuple.addAt2(true);
System.out.println(tuple);
System.out.println(newTuple1);
System.out.println(newTuple2);
}
}
In diesem Beispiel verwenden wir sowohl add()
als auch addAtX()
, um ein neues Boolean
-Element zum Triplet
-Tupel hinzuzufügen. Anschließend geben wir alle drei Tupel auf der Konsole aus.
Sie können in Java Elemente aus einem Tupel entfernen, indem Sie die Methode removeFromX()
verwenden, wobei X
der Index des Elements ist, das Sie entfernen möchten. Die Methode removeFromX()
gibt ein neues Tupel zurück, daher stellen Sie sicher, dass Sie es einer Variablen zuweisen.
import org.javatuples.*;
public class TupleDemo {
public static void main(String[] args) {
Quartet<String, Double, Integer, Boolean> tuple = Quartet.with("Hello", 3.14, 42, true);
Triplet<Double, Integer, Boolean> newTuple1 = tuple.removeFrom0();
Triplet<String, Double, Integer> newTuple2 = tuple.removeFrom3();
System.out.println(tuple);
System.out.println(newTuple1);
System.out.println(newTuple2);
}
}
In diesem Beispiel verwenden wir removeFrom0()
und removeFrom3()
, um das erste und das letzte Element aus dem Quartet
-Tupel zu entfernen. Anschließend geben wir alle drei Tupel auf der Konsole aus.
Sie können in Java über ein Tupel iterieren, indem Sie eine for-each
-Schleife verwenden. Da Tupel das Iterable
-Interface implementieren, können Sie sie wie jede andere Sammlung in einer Schleife verwenden.
import org.javatuples.*;
public class TupleDemo {
public static void main(String[] args) {
Triplet<String, Double, Integer> tuple = Triplet.with("Hello", 3.14, 42);
for (Object element : tuple) {
System.out.println(element);
}
}
}
In diesem Beispiel iterieren wir über das Triplet
-Tupel mit einer for-each
-Schleife und geben jedes Element auf der Konsole aus.
Sie können überprüfen, ob ein Tupel ein bestimmtes Element oder eine Sammlung von Elementen enthält, indem Sie die Methoden contains()
und containsAll()
verwenden.
Die Methode contains()
gibt true
zurück, wenn das Tupel das angegebene Element enthält, und containsAll()
gibt true
zurück, wenn das Tupel alle Elemente einer Sammlung enthält.
import org.javatuples.*;
import java.util.Arrays;
import java.util.List;
public class TupleDemo {
public static void main(String[] args) {
Triplet<String, Double, Integer> tuple = Triplet.with("Hello", 3.14, 42);
List<Integer> list = Arrays.asList(42, 7);
boolean containsHello = tuple.contains("Hello");
boolean containsWorld = tuple.contains("World");
boolean containsAll = tuple.containsAll(list);
System.out.println(containsHello);
System.out.println(containsWorld);
System.out.println(containsAll);
}
}
In diesem Beispiel verwenden wir contains()
und containsAll()
, um zu überprüfen, ob das Triplet
-Tupel bestimmte Elemente oder eine Sammlung von Elementen enthält. Anschließend geben wir die Ergebnisse auf der Konsole aus.
Sie können den Index eines bestimmten Elements in einem Tupel mithilfe der Methoden indexOf()
und lastIndexOf()
abrufen. indexOf()
gibt den Index der ersten Vorkommnis des Elements zurück, während lastIndexOf()
den Index der letzten Vorkommnis zurückgibt.
import org.javatuples.*;
public class TupleDemo {
public static void main(String[] args) {
Quartet<String, Double, Integer, Integer> tuple = Quartet.with("a", 1.0, 1, 2);
int firstIndex = tuple.indexOf(1);
int lastIndex = tuple.lastIndexOf(1);
System.out.println(firstIndex);
System.out.println(lastIndex);
}
}
In diesem Beispiel verwenden wir indexOf()
und lastIndexOf()
, um den Index des Integer
-Elements im Quartet
-Tupel abzurufen. Anschließend geben wir die Ergebnisse auf der Konsole aus.
Sie können ein Tupel in ein Array oder eine Liste konvertieren, indem Sie die Methoden toArray()
bzw. toList()
verwenden.
import org.javatuples.*;
import java.util.Arrays;
import java.util.List;
public class TupleDemo {
public static void main(String[] args) {
Quartet<String, Double, Integer, Boolean> tuple = Quartet.with("Hello", 3.14, 42, true);
Object[] arr = tuple.toArray();
List<Object> list = tuple.toList();
System.out.println(Arrays.toString(arr));
System.out.println(list);
}
}
In diesem Beispiel verwenden wir toArray()
und toList()
, um das Quartet
-Tupel in ein Array bzw. eine Liste zu konvertieren. Anschließend geben wir beide auf der Konsole aus.
In diesem Lab haben wir gelernt, wie man Tupel in Java mit der Java-Tupel-Bibliothek erstellt, auf sie zugreift, sie modifiziert und über sie iteriert. Wir haben auch gelernt, wie man Elemente hinzufügt und entfernt, die Anwesenheit von Elementen prüft, Element-Indizes abruft und Tupel in Arrays oder Listen konvertiert. Durch das Üben dieser Methoden sollten Sie nun in der Lage sein, effektiv mit Tupeln in Ihren eigenen Java-Programmen zu arbeiten.