ImmutablePair 的用法

ImmutablePair 是Apache Commons Lang库(org.apache.commons.langs.tuple.ImmutablePair)提供的一个不可变的键值对结构。它用于存储两个相关的对象,并保证它们是可不变得的。

1.在使用ImmutablePair时要先引入依赖


    org.apache.commons
    commons-lang3
    3.12.0

2. 创建ImmutablePair 

2.1使用构造方法创建

import org.apache.commons.lang3.tuple.ImmutablePair;

public class ImmutablePairExample {
    public static void main(String[] args) {
        ImmutablePair pair = new ImmutablePair<>("Alice", 25);
        
        System.out.println("First: " + pair.getLeft());  // Alice
        System.out.println("Second: " + pair.getRight()); // 25
    }
}

2.2 使用of()方法创建

ImmutablePair pair = ImmutablePair.of("Bob", 30);
System.out.println(pair.getLeft());  // Bob
System.out.println(pair.getRight()); // 30

3. 获取ImmutablePair的值

ImmutablePair 的用法_第1张图片示例:

System.out.println(pair.getLeft());  // Alice
System.out.println(pair.getRight()); // 25
System.out.println(pair.getKey());   // Alice
System.out.println(pair.getValue()); // 25

4.ImmutablePair 不可变特性

Immutablepair 不可修改,以下代码在运行时会报错

pair.setLeft("Tom");  // ❌ 错误
pair.setRight(40);    // ❌ 错误

 如果需要可变的 Pair,可以使用 MutablePair

import org.apache.commons.lang3.tuple.MutablePair;

MutablePair pair = new MutablePair<>("Tom", 40);
pair.setLeft("Jerry");  // ✅ 修改成功
pair.setRight(50);      // ✅ 修改成功
System.out.println(pair); // (Jerry, 50)

5. Immutableoair 的应用场景

5.1 方法返回多个值

Java方法默认只返回一个值,如果需要返回两个值,可以使用ImmutablePair:

public static ImmutablePair getUserInfo() {
    return ImmutablePair.of("Charlie", 28);
}

public static void main(String[] args) {
    ImmutablePair userInfo = getUserInfo();
    System.out.println("Name: " + userInfo.getLeft());  // Charlie
    System.out.println("Age: " + userInfo.getRight());  // 28
}

 5.2 作为Map的key或value

Map, Integer> productSales = new HashMap<>();

productSales.put(ImmutablePair.of("Apple", "Red"), 100);
productSales.put(ImmutablePair.of("Banana", "Yellow"), 50);

System.out.println(productSales.get(ImmutablePair.of("Apple", "Red"))); // 100

5.3 处理键值对数据

例如,处理数据库查询结果

List> userList = new ArrayList<>();
userList.add(ImmutablePair.of("David", 35));
userList.add(ImmutablePair.of("Emma", 29));

for (ImmutablePair user : userList) {
    System.out.println(user.getLeft() + " is " + user.getRight() + " years old.");
}

 6. 总结

ImmutablePair 适用于存储两种数据的不可变键值对。
相比 Map.Entry 更直观,适用于方法返回多个值、键值对存储等场景。
如果需要可变的键值对,可使用 MutablePair

你可能感兴趣的:(算法,java)