02-实现方法多值返回-pair与truple

在实际的项目开发中,我们经常会遇到返回多个值,通常我们使用Map对象、自定义Class对象等方式封装返回结果。但是这种方式,需要定义大量中间类,影响代码的整体质量。

spring 为我们提供了pair 双值与 triple 三值返回对象。

1、pair

具备两个值的键值对,left、right

复制代码
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.12.0</version>
</dependency>

提供两种数据对象

**ImmutablePair:**一个不可变的类,一旦创建,就不能更改其值,表示一个只读的键值对。其内部属性提供final申明。

**MutablePair:**一个可变的类,可以在创建之后更改其值,表示一个可变的键值对。

以下是两种对象使用案例

复制代码
public static void main(String[] args) {
        Pair<Integer, Integer> pair = Pair.of(1, 10); //同ImmutablePair.of(1, 10)
        System.out.println(pair.getLeft()); //1
        System.out.println(pair.getRight()); //10
        //pair.setValue(30); //报错:java.lang.UnsupportedOperationException
 
        pair = MutablePair.of(1, 10);
        ((MutablePair<Integer, Integer>) pair).setLeft(100);
        ((MutablePair<Integer, Integer>) pair).setRight(200);
        System.out.println(pair.getLeft()); //100
        System.out.println(pair.getRight()); //200
        pair.setValue(200); 
    }

2、triple

可以存储三个值,left、middle、right,使用方式与pair 类型。

同时也具备了 ImmutableTriple 与 MutableTriple 两种对象使用。

以下是使用案例

复制代码
import org.apache.commons.lang3.tuple.Triple;
 
public class TripleExample {
    public static void main(String[] args) {
        Triple<String, Integer, Boolean> triple = Triple.of("John", 25, true);
        System.out.println("Name: " + triple.getLeft()); // 输出"Name: John"
        System.out.println("Age: " + triple.getMiddle()); // 输出"Age: 25"
        System.out.println("IsMale: " + triple.getRight()); // 输出"IsMale: true"
        triple.setValue("Bob", 30, false);
        System.out.println("Name: " + triple.getLeft()); // 输出"Name: Bob"
        System.out.println("Age: " + triple.getMiddle()); // 输出"Age: 30"
        System.out.println("IsMale: " + triple.getRight()); // 输出"IsMale: false"
    }
}
相关推荐
小江的记录本2 小时前
【注解】常见 Java 注解系统性知识体系总结(附《全方位对比表》+ 思维导图)
java·前端·spring boot·后端·spring·mybatis·web
zs宝来了5 小时前
Spring MVC 请求处理全流程:从 DispatcherServlet 到视图渲染
spring·mvc·源码解析·dispatcherservlet
商吉婆尼5 小时前
天地图API调用注意事项
java·spring·天地图
种时光的人7 小时前
Java+AI 无缝衔接:Spring AI 聊天模型入门到精通
java·人工智能·spring·ai·spring ai
野生技术架构师7 小时前
Spring Boot 4 与 Spring Framework 7 全面解析:新特性、升级要点与实战指南
spring boot·后端·spring
weixin_704266058 小时前
Spring 注解驱动开发与 Spring Boot 核心知识点梳理
java·spring boot·spring
无名-CODING9 小时前
小白初识 SpringCloud:微服务基础与 SpringCloud 核心作用
spring·spring cloud·微服务
小江的记录本9 小时前
【Spring注解】Spring生态常见注解——面试高频考点总结
java·spring boot·后端·spring·面试·架构·mvc
Predestination王瀞潞9 小时前
Java EE3-我独自整合(第二章:Spring IoC 入门案例)
数据库·spring·java-ee
梁山话事人9 小时前
Spring IOC
java·数据库·spring