Java 中的 JavaTuples

Rupam Yadav 2023年10月12日
  1. JavaTuples 的特點
  2. JavaTuples 中的元組類
  3. JavaTuples 中的方法
  4. 在 Java 中實現元組
Java 中的 JavaTuples

元組是一種資料結構,可以儲存物件而不需要它們之間的任何關係,但具有共同的動機。Java 不支援元組資料結構,但我們可以使用 JavaTuples 庫。

JavaTuples 的特點

  • 元組是型別安全的
  • 它們是不可變的
  • 我們可以遍歷元組值
  • 它們是可序列化的
  • 他們實現了 Comparable<Tuple>
  • 實現諸如 equals()hashCode()toString() 之類的方法

JavaTuples 中的元組類

我們最多可以在元組類中使用十個元素。JavaTuples 中的每個元素都有特殊的子類,如下表所述:

元素數量(元組大小) 類名稱 例子
Unit Unit<1>
Pair Pair<1,2>
Triplet Triplet<1,2,3>
Quartet Quartet<1,2,3,4>
Quintet Quintet<1,2,3,4,5>
Sextet Sextet<1,2,3,4,5,6>
Septet Septet<1,2,3,4,5,6,7>
Octet Octet<1,2,3,4,5,6,7,8>
Ennead Ennead<1,2,3,4,5,6,7,8,9>
Decade Decade<1,2,3,4,5,6,7,8,9,10>

JavaTuples 中的方法

Tuple 類提供了各種方法來執行操作。

方法 描述
equals() 它用於覆蓋 Object 類的 equals 方法的預設實現
hashCode() 返回每個物件的雜湊碼。
toString() 返回一個字串表示
getSize() 返回元組的大小
getValue() 返回元組中指定位置的值
indexOf() 返回給定字串中詢問的子字串的索引。
contains() 檢查元組中是否存在元素
containsAll() 檢查列表或陣列的所有元素是否存在於元組中
iterator() 返回一個迭代器
lastIndexOf() 返回給定字串中詢問的子字串的最後一個索引。
toArray() 元組到陣列
toList() 要列出的元組

在 Java 中實現元組

我們匯入以下基於 maven 的依賴項以使用 JavaTuples 庫。

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

在示例中,我們實現了上表中的各種元組類,並通過列印它們來獲取它們的值。我們在元組中提供不同的資料型別,如 StringIntegerBoolean 等。

我們還建立了一個類 DummyClass,如果它丟擲錯誤,則在元組中傳遞它的物件。

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 {}

輸出:

[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
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