1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.hadoop.hbase.util;
20
21 import org.apache.hadoop.classification.InterfaceAudience;
22
23
24
25
26 @InterfaceAudience.Private
27 public class Triple<A, B, C> {
28 private A first;
29 private B second;
30 private C third;
31
32 public Triple(A first, B second, C third) {
33 this.first = first;
34 this.second = second;
35 this.third = third;
36 }
37
38 public int hashCode() {
39 int hashFirst = (first != null ? first.hashCode() : 0);
40 int hashSecond = (second != null ? second.hashCode() : 0);
41 int hashThird = (third != null ? third.hashCode() : 0);
42
43 return (hashFirst >> 1) ^ hashSecond ^ (hashThird << 1);
44 }
45
46 public boolean equals(Object obj) {
47 if (!(obj instanceof Triple)) {
48 return false;
49 }
50
51 Triple<?, ?, ?> otherTriple = (Triple<?, ?, ?>) obj;
52
53 if (first != otherTriple.first && (first != null && !(first.equals(otherTriple.first))))
54 return false;
55 if (second != otherTriple.second && (second != null && !(second.equals(otherTriple.second))))
56 return false;
57 if (third != otherTriple.third && (third != null && !(third.equals(otherTriple.third))))
58 return false;
59
60 return true;
61 }
62
63 public String toString() {
64 return "(" + first + ", " + second + "," + third + " )";
65 }
66
67 public A getFirst() {
68 return first;
69 }
70
71 public void setFirst(A first) {
72 this.first = first;
73 }
74
75 public B getSecond() {
76 return second;
77 }
78
79 public void setSecond(B second) {
80 this.second = second;
81 }
82
83 public C getThird() {
84 return third;
85 }
86
87 public void setThird(C third) {
88 this.third = third;
89 }
90 }
91
92
93