001    package aima.util;
002    
003    /**
004     * @author Ravi Mohan
005     * 
006     */
007    
008    public class Pair<X, Y> {
009            private final X a;
010    
011            private final Y b;
012    
013            public Pair(X a, Y b) {
014                    this.a = a;
015                    this.b = b;
016            }
017    
018            public X getFirst() {
019                    return a;
020            }
021    
022            public Y getSecond() {
023                    return b;
024            }
025    
026            @Override
027            public boolean equals(Object o) {
028    
029                    Pair<X, Y> p = (Pair<X, Y>) o;
030                    return a.equals(p.a) && b.equals(p.b);
031            }
032    
033            @Override
034            public int hashCode() {
035                    return a.hashCode() + 31 * b.hashCode();
036            }
037    
038            @Override
039            public String toString() {
040                    return "< " + getFirst().toString() + " , " + getSecond().toString()
041                                    + " > ";
042            }
043    
044    }