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)
}
}