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.hbase.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
39 public static <A, B, C> Triple<A, B, C> create(A first, B second, C third) {
40 return new Triple<A, B, C>(first, second, third);
41 }
42
43 @Override
44 public int hashCode() {
45 int hashFirst = (first != null ? first.hashCode() : 0);
46 int hashSecond = (second != null ? second.hashCode() : 0);
47 int hashThird = (third != null ? third.hashCode() : 0);
48
49 return (hashFirst >> 1) ^ hashSecond ^ (hashThird << 1);
50 }
51
52 @Override
53 public boolean equals(Object obj) {
54 if (!(obj instanceof Triple)) {
55 return false;
56 }
57
58 Triple<?, ?, ?> otherTriple = (Triple<?, ?, ?>) obj;
59
60 if (first != otherTriple.first && (first != null && !(first.equals(otherTriple.first))))
61 return false;
62 if (second != otherTriple.second && (second != null && !(second.equals(otherTriple.second))))
63 return false;
64 if (third != otherTriple.third && (third != null && !(third.equals(otherTriple.third))))
65 return false;
66
67 return true;
68 }
69
70 @Override
71 public String toString() {
72 return "(" + first + ", " + second + "," + third + " )";
73 }
74
75 public A getFirst() {
76 return first;
77 }
78
79 public void setFirst(A first) {
80 this.first = first;
81 }
82
83 public B getSecond() {
84 return second;
85 }
86
87 public void setSecond(B second) {
88 this.second = second;
89 }
90
91 public C getThird() {
92 return third;
93 }
94
95 public void setThird(C third) {
96 this.third = third;
97 }
98 }