package org.ggp.base.util; import java.util.Map; public class Pair <L, R> { public final L left; public final R right; private Pair(L left, R right) { this.left = left; this.right = right; } public static <L, R> Pair<L, R> of(L left, R right) { return new Pair<L, R>(left, right); } public static <L, R> Pair<L, R> from(Map.Entry<L, R> entry) { return of(entry.getKey(), entry.getValue()); } @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((left == null) ? 0 : left.hashCode()); result = prime * result + ((right == null) ? 0 : right.hashCode()); return result; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; Pair<?, ?> other = (Pair<?, ?>) obj; if (left == null) { if (other.left != null) return false; } else if (!left.equals(other.left)) return false; if (right == null) { if (other.right != null) return false; } else if (!right.equals(other.right)) return false; return true; } @Override public String toString() { return "<" + left + ", " + right + ">"; } }