[127] | 1 | package agents.anac.y2011.TheNegotiator;
|
---|
| 2 |
|
---|
| 3 | /**
|
---|
| 4 | * A simple tuple class.
|
---|
| 5 | *
|
---|
| 6 | * @author Alex Dirkzwager, Mark Hendrikx, Julian de Ruiter
|
---|
| 7 | */
|
---|
| 8 | public class Pair<A, B> {
|
---|
| 9 |
|
---|
| 10 | private A fst;
|
---|
| 11 | private B snd;
|
---|
| 12 |
|
---|
| 13 | public Pair(A fst, B snd) {
|
---|
| 14 | this.fst = fst;
|
---|
| 15 | this.snd = snd;
|
---|
| 16 | }
|
---|
| 17 |
|
---|
| 18 | public A getFirst() { return fst; }
|
---|
| 19 | public B getSecond() { return snd; }
|
---|
| 20 |
|
---|
| 21 | public void setFirst(A v) { fst = v; }
|
---|
| 22 | public void setSecond(B v) { snd = v; }
|
---|
| 23 |
|
---|
| 24 | public String toString() {
|
---|
| 25 | return "Pair[" + fst + "," + snd + "]";
|
---|
| 26 | }
|
---|
| 27 |
|
---|
| 28 | private static boolean equals(Object x, Object y) {
|
---|
| 29 | return (x == null && y == null) || (x != null && x.equals(y));
|
---|
| 30 | }
|
---|
| 31 |
|
---|
| 32 | public boolean equals(Object other) {
|
---|
| 33 | return
|
---|
| 34 | other instanceof Pair &&
|
---|
| 35 | equals(fst, ((Pair<?, ?>)other).fst) &&
|
---|
| 36 | equals(snd, ((Pair<?, ?>)other).snd);
|
---|
| 37 | }
|
---|
| 38 |
|
---|
| 39 | public int hashCode() {
|
---|
| 40 | if (fst == null) return (snd == null) ? 0 : snd.hashCode() + 1;
|
---|
| 41 | else if (snd == null) return fst.hashCode() + 2;
|
---|
| 42 | else return fst.hashCode() * 17 + snd.hashCode();
|
---|
| 43 | }
|
---|
| 44 |
|
---|
| 45 | public static <A,B> Pair<A,B> of(A a, B b) {
|
---|
| 46 | return new Pair<A,B>(a,b);
|
---|
| 47 | }
|
---|
[1] | 48 | } |
---|