ImmutablePair 的用法

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

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

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.12.0</version>
</dependency>

2. 创建ImmutablePair 

2.1使用构造方法创建

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

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

2.2 使用of()方法创建

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

3. 获取ImmutablePair的值

示例:

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<String, Integer> 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<String, Integer> getUserInfo() {
    return ImmutablePair.of("Charlie", 28);
}

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

 5.2 作为Map的key或value

Map<ImmutablePair<String, String>, 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<ImmutablePair<String, Integer>> userList = new ArrayList<>();
userList.add(ImmutablePair.of("David", 35));
userList.add(ImmutablePair.of("Emma", 29));

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

 6. 总结

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值