Skip to content

tuple 元组

Pair.of 和 new Tuple 区别

  • Pair 是 Apache Commons Lang 库中提供的一个简单的键值对数据结构。Pair.of 是一个静态方法,用于快速创建 Pair 实例。

  • 特点:

    • 来源org.apache.commons.lang3.tuple.Pair
    • 数据结构:键值对,包含 leftright 两个字段。
    • 用途:适合存储简单的两个值的组合,例如键值对、坐标等。
    • 不可变性Pair 本身可以是不可变的或可变的,具体取决于使用的是 ImmutablePair 还是 MutablePair
    • 方法:
      • Pair.of(left, right):创建一个 Pair 实例。
      • 可以通过 getLeft()getRight() 方法访问键值。
    java
    import org.apache.commons.lang3.tuple.Pair;
    
    Pair<String, Integer> pair = Pair.of("key", 123);
    System.out.println("Left: " + pair.getLeft()); // 输出: Left: key
    System.out.println("Right: " + pair.getRight()); // 输出: Right: 123
  • Tuple 是 Vavr(一个函数式编程库)或其他类似库提供的一个更通用的元组数据结构。它可以表示任意数量的元素(从 1 到 N 元组)。

  • 特点:

    • 来源io.vavr.Tuple(或者其他类似库的 Tuple 实现)。
    • 数据结构:泛化的元组,可以包含任意数量的元素(如 Tuple2Tuple3TupleN)。
    • 用途:适合函数式编程风格,通常用于返回多个值或临时组合多个值。
    • 不可变性:通常是不可变的(具体取决于库实现)。
    • 方法:
      • 可以通过构造器或静态方法 Tuple.of(...) 创建。
      • 使用 ._1, ._2, ._3 等方法访问元素。
  • java
    import io.vavr.Tuple;
    import io.vavr.Tuple2;
    
    Tuple2<String, Integer> tuple = Tuple.of("key", 123);
    System.out.println("First: " + tuple._1); // 输出: First: key
    System.out.println("Second: " + tuple._2); // 输出: Second: 123