-
Enhancement
-
Resolution: Duplicate
-
P4
-
None
-
6
-
None
-
generic
-
generic
Please add a Pair class to java.util. Pairs are often useful
when storing data in a Map. Getting equals and hashCode right
is not completely trivial.
Here is an example of immutable pairs:
package java.util;
public class Pair<A,B> {
private final A first;
private final B second;
public Pair(A first, B second) {
this.first = first;
this.second = second;
}
public getFirst() { return first; }
public getSecond() { return second; }
public String toString() {
return "(" + first + ", " + second + ")";
}
private static boolean equals(Object x, Object y) {
return (x == null && y == null) || (x != null && x.equals(y));
}
public boolean equals(Object other) {
return
other instanceof Pair &&
equals(first, ((Pair)other).first) &&
equals(second, ((Pair)other).second);
}
public int hashCode() {
if (first == null) return (second == null) ? 0 : second.hashCode() + 1;
else if (second == null) return first.hashCode() + 2;
else return first.hashCode() * 17 + second.hashCode();
}
}
This example is borrowed from javac and is mostly due to Martin Odersky.
Alternatively, a Pair interface could be defined with two implementations,
ImmutablePair and MutablePair.
###@###.### 2005-2-15 00:21:11 GMT
when storing data in a Map. Getting equals and hashCode right
is not completely trivial.
Here is an example of immutable pairs:
package java.util;
public class Pair<A,B> {
private final A first;
private final B second;
public Pair(A first, B second) {
this.first = first;
this.second = second;
}
public getFirst() { return first; }
public getSecond() { return second; }
public String toString() {
return "(" + first + ", " + second + ")";
}
private static boolean equals(Object x, Object y) {
return (x == null && y == null) || (x != null && x.equals(y));
}
public boolean equals(Object other) {
return
other instanceof Pair &&
equals(first, ((Pair)other).first) &&
equals(second, ((Pair)other).second);
}
public int hashCode() {
if (first == null) return (second == null) ? 0 : second.hashCode() + 1;
else if (second == null) return first.hashCode() + 2;
else return first.hashCode() * 17 + second.hashCode();
}
}
This example is borrowed from javac and is mostly due to Martin Odersky.
Alternatively, a Pair interface could be defined with two implementations,
ImmutablePair and MutablePair.
###@###.### 2005-2-15 00:21:11 GMT
- duplicates
-
JDK-4947273 (coll) Create a standard Pair class (based on C++ pair class)
- Closed
- relates to
-
JDK-4983155 Alpha Feedback: add generic Pair class
- Closed