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
。