package cx.prutser.sudoku.ocr; /** * A pair of objects - used to create composite keys for maps */ public class Pair<T1, T2> { private final T1 comp1; private final T2 comp2; public Pair(T1 comp1, T2 comp2) { this.comp1 = comp1; this.comp2 = comp2; } public static <T1,T2> Pair<T1,T2> newInstance(T1 comp1, T2 comp2) { return new Pair<T1, T2>(comp1, comp2); } public boolean equals(Object o) { if (this == o) return true; if (!(o instanceof Pair)) return false; final Pair pair = (Pair) o; if (comp1 != null ? !comp1.equals(pair.comp1) : pair.comp1 != null) return false; if (comp2 != null ? !comp2.equals(pair.comp2) : pair.comp2 != null) return false; return true; } public int hashCode() { int result; result = (comp1 != null ? comp1.hashCode() : 0); result = 29 * result + (comp2 != null ? comp2.hashCode() : 0); return result; } public T1 getFirst() { return comp1; } public T2 getSecond() { return comp2; } public String toString() { return "(" + comp1 + ", " + comp2 + ")"; } }