JDK-6229146 : (coll) Please add java.util.Pair
  • Type: Enhancement
  • Component: core-libs
  • Sub-Component: java.util:collections
  • Affected Version: 6
  • Priority: P4
  • Status: Closed
  • Resolution: Duplicate
  • OS: generic
  • CPU: generic
  • Submitted: 2005-02-15
  • Updated: 2012-10-08
  • Resolved: 2006-02-16
Related Reports
Duplicate :  
Relates :  
Description
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