JavaTuples 中的 KeyValue 类

2024 年 9 月 10 日 | 阅读 8 分钟

JavaTuples 库中的 KeyValue 类是一个专门化的 Tuple,包含两个元素:键 (key) 和值 (value)。它提供了一种比使用带索引的通用 Tuple 更具意义且更具自我说明力的方式来表示键值对。

作为 Tuple,`KeyValue` 类拥有 JavaTuples 所固有的所有特性和功能。

  • 不可变性: 一旦创建,KeyValue 对象就无法修改。它确保了数据的一致性,并简化了对代码的理解。
  • 类型安全: KeyValue 是泛型的,可以为键和值持有任何类型的对象,但它通过确保对每个元素的正确访问来强制执行类型安全。
  • 可迭代: KeyValue 对象可以被迭代,这使得它们在循环和其他处理任务中非常方便。
  • 可序列化: KeyValue 对象可以被序列化和反序列化,允许我们在不同进程或机器之间存储和传输它们。
  • 可比较: KeyValue 对象实现了 Comparable 接口,使我们能够根据它们的键值对进行比较。这对于排序和搜索操作尤其有用。
  • 相等性和哈希: KeyValue 对象提供了 equals() 和 hashCode() 方法,用于根据内容比较对象,确保在集合和其他数据结构中具有一致的行为。
  • toString(): KeyValue 提供了一个有意义的 toString() 表示,它显示键和值,使调试和代码可读性更容易。

类声明

  • IValueKey<A>: KeyValue 类实现了带有泛型类型 A 的 IValueKey 接口。这表明该类提供了与键操作相关的方法的实现。
  • IValueValue<B>: 同样,该类实现了带有泛型类型 B 的 IValueValue 接口,这表明它提供了与值操作相关的方法的实现。

类层次结构

  • Object: Java 中所有类的根类。
  • org.javatuples.Tuple: javatuples 库中的一个类,表示一个通用的 tuple。它作为更具体的 tuple 类型的基类。
  • org.javatuples.KeyValue<A, B>: javatuples 库中的一个类,表示一个键值对。它继承了 Tuple 类,并为键和值引入了泛型类型 AB。该类专门为键值对场景设计。

创建 KeyValue Tuple

KeyValue Tuple 是 JavaTuples 库中的一种专用 Tuple,旨在表示键值对,提供了一种方便的方式来存储和操作具有不同键和值组件的相关数据。

方法:使用构造函数

在使用 JavaTuples 时,我们可以使用构造函数来创建具有特定键值的新 KeyValue 实例。KeyValue 类通常提供接受键和值作为参数的构造函数。

语法

文件名: ConstructorExampleClass.java

输出

Key 1: Name
Value 1: 25
Key 2: 42
Value 2: 3.14

方法:使用 with() 方法

JavaTuples 库提供的 `with()` 方法用作创建具有特定值对象实例的函数。

语法

文件名: WithExample.java

输出

Person 1 - Name: Alice, Age: 28
Person 2 - Name: Bob, Age: 35

从其他集合

`fromCollection()` 方法用于从集合构建 Tuple,而 `fromArray()` 方法用于从数组创建 Tuple。至关重要的是,集合和数组必须与 Tuple 共享相同的数据类型,并且集合或数组中的值数量必须与 Tuple 类的元数完全对应。

语法

文件名: KeyValueExample.java

输出

KeyValue from List: [Key, Value]
Key: Key
Value: Value

获取值

KeyValue Tuple 中的 `getValue()` 和 `getKey()` 方法对于分别访问封装的值和键至关重要。这些方法提供了一种简单的方法来从 KeyValue Tuple 实例中检索相关的值和键。

getKey()

org.javatuples 库中的 `getKey()` 方法设计用于 KeyValue 类。它从 KeyValue 对象中检索键并确保类型安全。具体来说,它返回 KeyValue 对象中索引 0 处的元素。此方法仅在 javatuples 库的 KeyValue 对象中可用。

语法

文件名: GetKeyExampleClass.java

输出

Value: 42

getValue()

`org.javatuples` 库中的 `getValue()` 方法用于检索 Tuple 对象中指定索引处的值。它返回一个 `Object` 值,这可能会损害类型安全,因为返回值的类型没有明确指定。

语法

文件名: GetValueExampleClass.java

输出

Key: exampleKey
Value: 42

设置 KeyValue 值

在 Java 编程中,不可变性确保一旦创建元组,其元素就不能直接修改。JavaTuples 提供了 `setKey()` 和 `setValue()` 等方法来创建具有更新值的新实例,从而保持原始 KeyValue 对象的不可变性。

setKey()

JavaTuples 中的 `setKey()` 方法允许创建一个新的 KeyValue 实例,该实例具有更新的键,同时保持原始 Tuple 的不变性。该方法确保类型安全和一致性,并通过返回 KeyValue 对象的修改副本,符合函数式编程原则。

语法

文件名: SetKeyExample.java

输出

Original KeyValue: 1 - OriginalValue
Modified KeyValue: 2 - OriginalValue

setValue()

JavaTuples 中的 `setValue()` 方法允许我们创建一个新的 KeyValue 实例,该实例具有更新的值,同时保持原始 Tuple 的不可变性。当使用与同一键相关联的不同值时,此方法很有用。

语法

文件名: SetValueExample.java

输出

Original KeyValue: 1 - OriginalValue
Modified KeyValue: 1 - NewValue

在 KeyValue 中搜索

在键值对中搜索特定元素是编程中的一项常见操作,通常用于确定与给定键关联的特定值的存在与否。在 JavaTuples 库中的 Tuple 等上下文中,一个名为 `contains()` 的预定义方法提供了一种执行这些搜索的便捷方式。此方法返回一个布尔值,指示指定的键是否存在于 Tuple 中。

语法

文件名: KeyValueSearchExample.java

输出

Exists: true
Exists1: false
KeyValue 1 is equal to KeyValue 2: false

遍历 KeyValue

遍历键值对是编程中的一个基本过程,对于处理将值与唯一键关联的数据结构至关重要。它涉及访问和处理数据结构中的每个对,从而能够执行诸如搜索、更新和基于存储信息执行计算等任务。

语法

文件名: KeyValueIterationExample.java

输出

Key: 1, Value: JavaTpoint
Key: 2, Value: JavaTuples
Key: 3, Value: Programming

下一个主题Java 中的量词