package ch.zhaw.catan; public class Tuple { public final X first; public final Y second; public Tuple(X x, Y y) { this.first = x; this.second = y; } @Override public String toString() { return "(" + first + "," + second + ")"; } @Override public boolean equals(Object other) { if (other == this) { return true; } if (!(other instanceof Tuple)) { return false; } @SuppressWarnings("unchecked") Tuple otherCasted = (Tuple) other; // null is not a valid value for first and second tuple element return otherCasted.first.equals(this.first) && otherCasted.second.equals(this.second); } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((first == null) ? 0 : first.hashCode()); result = prime * result + ((second == null) ? 0 : second.hashCode()); return result; } }