JavaTuples en Java

Rupam Yadav 12 octubre 2023
  1. Características de JavaTuples
  2. Tupla Clases en JavaTuples
  3. Métodos en JavaTuples
  4. Implementar Tuple en Java
JavaTuples en Java

Una tupla es una estructura de datos que puede almacenar objetos sin que se requiera ninguna relación entre ellos pero que tengan un motivo mutuo. Java no admite la estructura de datos de tupla, pero podemos usar una biblioteca JavaTuples.

Características de JavaTuples

  • Las Tuplas son Typesafe
  • Son inmutables
  • Podemos iterar a través de valores de tupla
  • Son serializables
  • Implementan Comparable<Tuple>
  • Implementa métodos como equals(), hashCode(), y toString()

Tupla Clases en JavaTuples

Podemos usar hasta diez elementos en clases de tupla. Hay subclases especiales para cada número de elementos en JavaTuples que se mencionan en la siguiente tabla:

No. de Elementos (Tamaño de Tupla) Nombre de la clase Ejemplo
Una Unit Unit<1>
Dos Pair Pair<1,2>
Tres Triplet Triplet<1,2,3>
cuatro Quartet Quartet<1,2,3,4>
Cinco Quintet Quintet<1,2,3,4,5>
Seis Sextet Sextet<1,2,3,4,5,6>
Siete Septet Septet<1,2,3,4,5,6,7>
Ocho Octet Octet<1,2,3,4,5,6,7,8>
Nueve Ennead Ennead<1,2,3,4,5,6,7,8,9>
Diez Decade Decade<1,2,3,4,5,6,7,8,9,10>

Métodos en JavaTuples

La clase Tuple proporciona varios métodos para realizar operaciones.

Método Descripción
equals() Se utiliza para anular la implementación por defecto del método equals de la clase Object
hashCode() Devuelve un código hash para cada objeto.
toString() Devuelve una representación de cadena
getSize() Devuelve el tamaño de las tuplas.
getValue() Devuelve un valor en una posición especificada en una tupla
indexOf() Devuelve el índice de la subcadena solicitada en una cadena determinada.
contains() Comprobar si existe un elemento en la tupla
containsAll() Comprueba si todos los elementos de una lista o matriz existen en la tupla o no
iterator() Devuelve un iterador
lastIndexOf() Devuelve el último índice de la subcadena solicitada en una cadena determinada.
toArray() Tupla a matriz
toList() Tupla a lista

Implementar Tuple en Java

Importamos la siguiente dependencia basada en maven para usar la biblioteca JavaTuples.

   <dependency>
      <groupId>org.javatuples</groupId>
      <artifactId>javatuples</artifactId>
      <version>[1.2]</version>
      <scope>compile</scope>
   </dependency>

En el ejemplo, implementamos varias clases de tuplas en la tabla anterior y obtenemos sus valores imprimiéndolos. Proporcionamos diferentes tipos de datos en las tuplas como String, Integer, Boolean, etc.

También creamos una clase DummyClass y pasamos su objeto en las tuplas si arroja un error.

import org.javatuples.*;

public class JavaTuplesExample {
  public static void main(String[] args) {
    Unit<String> unitTuple = new Unit<>("First Tuple Element");
    Pair<String, Integer> pairTuple = new Pair<>("First Tuple Element", 2);
    Triplet<String, Integer, Boolean> tripletTuple = new Triplet<>("First Tuple Element", 2, true);
    Quartet<String, Integer, Boolean, String> quartetTuple =
        new Quartet<>("First Tuple Element", 2, true, "Fourth Tuple Element");
    Quintet<String, Integer, Boolean, String, Integer> quintetTuple =
        new Quintet<>("First Tuple Element", 2, true, "Fourth Tuple Element", 5);
    Sextet<String, Integer, Boolean, String, Integer, DummyClass> sextetTuple =
        new Sextet<>("First Tuple Element", 2, true, "Fourth Tuple Element", 5, new DummyClass());
    Septet<String, Integer, Boolean, String, Integer, DummyClass, Integer> septetTuple =
        new Septet<>(
            "First Tuple Element", 2, true, "Fourth Tuple Element", 5, new DummyClass(), 7);
    Octet<String, Integer, Boolean, String, Integer, DummyClass, Integer, String> octetTuple =
        new Octet<>("First Tuple Element", 2, true, "Fourth Tuple Element", 5, new DummyClass(), 7,
            "Eight Tuple Element");
    Ennead<String, Integer, Boolean, String, Integer, DummyClass, Integer, String, Integer>
        enneadTuple = new Ennead<>("First Tuple Element", 2, true, "Fourth Tuple Element", 5,
            new DummyClass(), 7, "Eight Tuple Element", 9);
    Decade<String, Integer, Boolean, String, Integer, DummyClass, Integer, String, Integer, String>
        decadeTuple = new Decade<>("First Tuple Element", 2, true, "Fourth Tuple Element", 5,
            new DummyClass(), 7, "Eight Tuple Element", 9, "Tenth Tuple Element");

    System.out.println(unitTuple);
    System.out.println(pairTuple);
    System.out.println(tripletTuple);
    System.out.println(quartetTuple);
    System.out.println(quintetTuple);
    System.out.println(sextetTuple);
    System.out.println(septetTuple);
    System.out.println(octetTuple);
    System.out.println(enneadTuple);
    System.out.println(decadeTuple);
  }
}

class DummyClass {}

Producción :

[First Tuple Element]
[First Tuple Element, 2]
[First Tuple Element, 2, true]
[First Tuple Element, 2, true, Fourth Tuple Element]
[First Tuple Element, 2, true, Fourth Tuple Element, 5]
[First Tuple Element, 2, true, Fourth Tuple Element, 5, DummyClass@254989ff]
[First Tuple Element, 2, true, Fourth Tuple Element, 5, DummyClass@5d099f62, 7]
[First Tuple Element, 2, true, Fourth Tuple Element, 5, DummyClass@37f8bb67, 7, Eight Tuple Element]
[First Tuple Element, 2, true, Fourth Tuple Element, 5, DummyClass@49c2faae, 7, Eight Tuple Element, 9]
[First Tuple Element, 2, true, Fourth Tuple Element, 5, DummyClass@20ad9418, 7, Eight Tuple Element, 9, Tenth Tuple Element]
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn