不可变对哈希代码



我需要使用一个不可变对。但它的哈希代码似乎是这样定义的:https://commons.apache.org/proper/commons-lang/apidocs/src-html/org/apache/commons/lang3/tuple/Pair.html#line.208.这意味着ImmutablePair.of("a", "a")ImmutablePair.of("b", "b")将具有相同的hashCode0:

ImmutablePair<String, String> p1 = ImmutablePair.of("a", "a");
System.out.println("Pair 1 hashcode: " + p1.hashCode());
ImmutablePair<String, String> p2 = ImmutablePair.of("b", "b");
System.out.println("Pair 2 hashcode: " + p2.hashCode());

输出:

Pair 1 hashcode: 0
Pair 2 hashcode: 0

这对我来说似乎很奇怪。有人能解释一下这样做的理由是什么吗?

正如方法定义的注释中所指定的,ImmutablePair实现的Map.Entry的合同需要此实现。

最新更新