package peergos.shared.util; import java.util.function.Function; public class Pair<L,R> { public final L left; public final R right; public Pair(L left, R right) { this.left = left; this.right = right; } public <B,D> Pair<B, D> apply(Function<L, B> applyLeft, Function<R, D> applyRight) { return new Pair<>( applyLeft.apply(left), applyRight.apply(right)); } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Pair<?, ?> pair = (Pair<?, ?>) o; if (left != null ? !left.equals(pair.left) : pair.left != null) return false; return right != null ? right.equals(pair.right) : pair.right == null; } @Override public int hashCode() { int result = left != null ? left.hashCode() : 0; result = 31 * result + (right != null ? right.hashCode() : 0); return result; } @Override public String toString() { return "(" + left.toString() + ", " + right.toString() + ")"; } }