一文读懂Triple<L,M,R>

本文介绍了ApacheCommonsLang库中的Triple类,包括其不可变的ImmutableTriple和可变的MutableTriple子类,展示了如何创建、获取值、比较和操作这些对象,以及它们在Java编程中的应用场景。
摘要由CSDN通过智能技术生成

Triple类是一个抽象类,位于org.apache.commons.lang3.tuple包下,它可以存储三个对象,分别称为left、middle和right。Triple类实现了Comparable和Serializable接口,还提供了一些方法来获取和比较这三个对象。Triple类本身是不可变的,也就是说,一旦创建了一个Triple实例,就不能修改它的left、middle或right的值。

如果想要创建一个可变的Triple实例,可以使用MutableTriple类(线程不安全),它是Triple类的子类,它允许修改left、middle和right的值。MutableTriple类提供了相应的set方法来改变这三个对象。

如果想要创建一个不可变的Triple实例,可以使用ImmutableTriple类(线程安全),它也是Triple类的子类,它的left、middle和right的值都是final的,不能被修改。ImmutableTriple类提供了一个of方法来创建一个新的ImmutableTriple实例。

Triple类还有一个内部类TripleAdapter,它是一个空的Triple实例,用于创建一个空的Triple数组。

以下是一个使用Triple类的示例代码:

import org.apache.commons.lang3.tuple.Triple;
import org.apache.commons.lang3.tuple.MutableTriple;
import org.apache.commons.lang3.tuple.ImmutableTriple;

public class Test {
    public static void main(String[] args) {
        // 创建一个Triple实例,使用of方法
        Triple<String, Integer, Boolean> triple = Triple.of("张三", 18, true);
        // 获取left、middle和right的值
        System.out.println(triple.getLeft()); // 张三
        System.out.println(triple.getMiddle()); // 18
        System.out.println(triple.getRight()); // true
        // 比较两个Triple实例是否相等,使用equals方法
        System.out.println(triple.equals(Triple.of("张三", 18, true))); // true
        System.out.println(triple.equals(Triple.of("李四", 19, false))); // false
        // 将Triple实例转换为字符串,使用toString方法
        System.out.println(triple.toString()); // (张三,18,true)

        // 创建一个MutableTriple实例,使用of方法
        MutableTriple<String, Integer, Boolean> mutableTriple = MutableTriple.of("李四", 19, false);
        // 修改left、middle和right的值,使用set方法
        mutableTriple.setLeft("王五");
        mutableTriple.setMiddle(20);
        mutableTriple.setRight(true);
        // 打印修改后的值
        System.out.println(mutableTriple); // (王五,20,true)

        // 创建一个ImmutableTriple实例,使用of方法
        ImmutableTriple<String, Integer, Boolean> immutableTriple = ImmutableTriple.of("赵六", 21, false);
        // 试图修改left、middle和right的值,会报错
        // immutableTriple.setLeft("张三"); // 编译错误,setLeft方法不存在
        // immutableTriple.left = "张三"; // 编译错误,left是final的
        // 打印不可变的值
        System.out.println(immutableTriple); // (赵六,21,false)
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值