1 package de.jaret.util.misc;
2
3 public class Pair<L, R> {
4
5 private final L _left;
6 private final R _right;
7
8 public R getRight() {
9 return _right;
10 }
11
12 public L getLeft() {
13 return _left;
14 }
15
16 public Pair(final L left, final R right) {
17 _left = left;
18 _right = right;
19 }
20
21 public final boolean equals(Object o) {
22 if (!(o instanceof Pair))
23 return false;
24
25 final Pair<?, ?> other = (Pair<?, ?>) o;
26 return equal(getLeft(), other.getLeft()) && equal(getRight(), other.getRight());
27 }
28
29 public static final boolean equal(Object o1, Object o2) {
30 if (o1 == null) {
31 return o2 == null;
32 }
33 return o1.equals(o2);
34 }
35
36 public int hashCode() {
37 int hLeft = getLeft() == null ? 0 : getLeft().hashCode();
38 int hRight = getRight() == null ? 0 : getRight().hashCode();
39
40 return hLeft + (57 * hRight);
41 }
42 }