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