做园林景观的网站,免费行情100个软件,上海建设安检站网站,旅游电子商务网站建设规划书Hutool 是一个开源的 Java 工具库#xff0c;提供了丰富且实用的功能#xff0c;旨在减少 Java 程序员在日常开发中重复造轮子的工作。在 Hutool 中#xff0c;Pair、Triple 和 Tuple 是三种用于组合和存储不同数量相关联数据的类。以下是这三个类的简介#xff1a;
1、添…Hutool 是一个开源的 Java 工具库提供了丰富且实用的功能旨在减少 Java 程序员在日常开发中重复造轮子的工作。在 Hutool 中Pair、Triple 和 Tuple 是三种用于组合和存储不同数量相关联数据的类。以下是这三个类的简介
1、添加依赖
dependencygroupIdorg.dromara.hutool/groupIdartifactIdhutool-all/artifactIdversion6.0.0-M12/version
/dependency2、Pair、Triple 和 Tuple介绍
2.1、 Pair
Pair 用于存储两个元素的键值对通常包含一个键和一个值。这种结构在需要将两个相关联的数据项作为一个单元进行操作时非常有用。
键值结构提供键left和值right两种数据的存储。不可变性一旦创建Pair 中的值不能被修改保证了数据的不可变性和线程安全。使用场景存储用户ID和名称、记录商品价格和库存数量等。
2.2、 Triple
Triple 类似于 Pair并继承于Pair但它可以存储三个元素。它同样提供了不可变性确保数据的稳定性。
三个元素可以看作是Pair 的组合。不可变性值不可修改。使用场景用于存储更复杂的数据关系如姓名、年龄和性别或者订单的ID、价格和状态等。
2.3、 Tuple
Tuple 是一种在 Java 中使用的不可变数据结构用于存储任意数量的元素。与 Pair 和 Triple 不同Tuple 不强制要求有固定的元素数量可以存储多个元素但它不支持修改、添加或删除元素。
不可变性Tuple 对象创建后其内部的元素是不可变的这意味着一旦创建就不能更改 Tuple 中的任何元素。可存储的元素数量Tuple 可以存储任意数量的元素但创建 Tuple 时必须指定要存储的元素数量。使用场景适用于需要存储多个值但不关心键值对结构的情况例如订单详情、配置参数等。
3、 Pair 的创建和修改
3.1、 创建 Pair
// 用户名修改为 Alice Smith
userPair Pair.of(userPair.getLeft(), Alice Smith);
int userId userPair.getLeft();
String userName userPair.getRight();3.2、修改 Pair 中的值
// 创建一个新的 Pair值已被修改
PairInteger, String newPair Pair.of(pair.getLeft(), banana);3.3、 使用场景示例
Pair 类在以下场景下特别适用因为它提供了一个简单的方式来组合和操作两个相关联的数据项特别是方法需要返回两个值得情况下特别好用嘎嘎香 键值对操作当你需要将两个数据项关联起来其中一个作为键key另一个作为值value时Pair 类非常有用。例如用户ID和用户姓名、商品ID和价格等。 PairInteger, String userIdAndName Pair.of(1, Alice);映射关系Pair 类可以用来表示简单的映射关系如单词和翻译、文件路径和描述等。 PairString, String wordTranslation Pair.of(hello, 你好);元数据存储当你需要存储与某个实体相关的两个元数据项时Pair 类可以用来封装这些信息。 PairString, String metaData Pair.of(title, Example Title);返回结果在函数或方法返回两个相关结果时Pair 类提供了一种比基本数据类型数组更具有描述性和类型安全的方式。 PairInteger, Boolean calculationResult Pair.of(42, true);状态封装在某些情况下你可能需要将两个状态相关的字段封装在一起Pair 类可以用来实现这一点。 PairString, String statusPair Pair.of(status, active);筛选条件在处理集合或列表时Pair 类可以用来存储筛选条件例如在实现自定义的过滤逻辑时。 PairString, String filterCondition Pair.of(field, value);排序辅助在需要对列表进行排序同时需要根据两个条件进行比较时Pair 类可以用来封装排序的键。 ListPairString, Integer sortedList lists.stream().map(name - Pair.of(name, calculateScore(name))).sorted(Comparator.comparing(Pair::getRight)).collect(Collectors.toList());并发编程由于 Pair 类是不可变的它可以在并发环境中安全地共享这在需要实现线程安全的程序时非常有用。
Pair 类的设计简洁且易于使用它为处理简单的数据关联提供了轻量级和类型安全的解决方案。在任何需要将两个数据项作为一对进行操作的场景中Pair 类都是一个很好的选择。
4、 Triple 的使用
riple 和 Tuple 的使用与 Pair 类似
获取 Triple 中的值
TripleString, Integer, Boolean triple Triple.of(name, 25, true);
String name triple.getLeft();
int age triple.getMiddle();
boolean isActive triple.getRight();Triple 类在以下场景下比较适用因为它允许你存储和操作三个相关联的数据项这些数据项可能共同描述了一个完整的概念或实体 复杂实体描述当你需要表示一个包含三个不同属性或状态的实体时Triple 非常有用。例如一个学生的记录可能包含姓名、年龄和成绩。 TripleString, Integer, Integer studentInfo Triple.of(Alice, 20, 90);关联数据集在处理需要三个字段来关联多个数据集时Triple 类可以帮助你保持数据的一致性和清晰性。例如你可以使用 Triple 来存储两个日期开始和结束以及与这两个日期相关的值。 TripleLocalDate, LocalDate, Double salesData Triple.of(startDate, endDate, salesAmount);业务规则参数在某些业务逻辑中你可能需要三个参数来定义一个规则或条件。Triple 可以用来封装这些参数。 TripleDouble, Double, Double discountRule Triple.of(minimumAmount, maximumAmount, discountRate);配置数据如果你有一个配置文件或数据库表其中需要三个字段来存储配置信息Triple 可以用来封装这些配置数据。 TripleString, String, Integer databaseConfig Triple.of(host, localhost, 3306);数据聚合在需要将三个相关数据项聚合为一个单元时Triple 类可以简化代码并减少错误。 TripleInteger, Integer, Integer scoreStats Triple.of(minScore, maxScore, averageScore);映射和转换在数据处理和转换过程中当需要将三个不同的源数据项映射到三个不同的目标数据项时Triple 类可以帮助你保持数据的一致性。 TripleString, Integer, String keyToValueMap Triple.of(key1, 1, value1);总之Triple 类在需要表示或操作三个独立但相关联的数据项时非常有用它可以提供一种简洁、类型安全的方式来处理这些数据。
5、 Tuple 的使用
Tuple 类在 Java 中用于存储一组任意数量的元素
获取 Tuple 中的值
Tuple tuple Tuple.of(1, apple, true);
int id tuple.get(0);
String name tuple.get(1);
boolean active tuple.get(2);函数返回值当需要一个方法返回多个值但这些值之间没有明确的键值关系时可以使用 Tuple。 // 假设 calculateSum 返回三个整数值总和、最大值和最小值
TupleInteger, Integer, Integer sumMinMax calculateSum(1, 2, 3, 4, 5);参数封装当你需要将多个参数组合在一起传递给一个方法或构造器时Tuple 可以用来封装这些参数。 TupleString, Integer, Boolean userInfo Tuple.of(Alice, 25, true);事件或消息在处理事件驱动或消息传递系统时Tuple 可以用来封装事件或消息的多个相关属性。 TupleString, String, Integer messageInfo Tuple.of(SMS, Your order has been shipped, 123456);配置数据在处理配置文件或系统设置时Tuple 可以用来存储多个配置项。 TupleString, String, String appConfig Tuple.of(host, http://localhost:8080, username, admin);复合统计在需要进行复杂的统计计算时Tuple 可以用来封装多个相关的统计结果。 TupleInteger, Double, Double stats Tuple.of(count, average, standardDeviation);数据导出在使用数据导出功能时Tuple 可以用来封装一行或多行数据。 TupleString, String, String, String exportRow Tuple.of(id, name, email, status);自定义对象当需要创建一个包含多个字段的自定义对象但这些字段之间没有直接的关联关系时Tuple 可以用来构建这个对象。 TupleInteger, Double, String productDetails Tuple.of(productId, price, description);通用数据结构在那些需要灵活存储多个数据项但不需要特定键值对结构的场景中Tuple 是一个通用且灵活的选择。 TupleString, Integer, Double, Boolean complexData Tuple.of(name, 123, 456.78, false);Tuple 类的优点在于它的灵活性和简单的使用方式它允许开发者以非常直观的方式组合和传递多个数据项。然而由于 Tuple 没有提供明确的键名称因此在使用时可能需要更多的上下文信息或者通过位置索引来访问内部的元素。