// Copyright 2013 Thomas Müller // This file is part of MarMoT, which is licensed under GPLv3. package marmot.util; public class Tuple<T, D extends Comparable<D>> implements Comparable<Tuple<T, D>> { public T x; public D y; public Tuple(T x, D y) { this.x = x; this.y = y; } @Override public int compareTo(Tuple<T, D> t) { return -y.compareTo(t.y); } @Override public String toString() { return String.valueOf(x) + ":" + String.valueOf(y); } @Override public boolean equals(Object o) { if (o == this) { return true; } if (o == null) { return false; } if (o instanceof Tuple<?, ?>) { Tuple<?, ?> tuple = (Tuple<?, ?>) o; return tuple.x.equals(this.x) && tuple.y.equals(this.y); } return false; } @Override public int hashCode() { return 3 * (x.hashCode() + y.hashCode()); } }