HBASE-24163 MOB compactor implementations should use format specifiers when calling...
[hbase.git] / hbase-common / src / main / java / org / apache / hadoop / hbase / util / Triple.java
blob908664480ef3c3dabd74060d1aca8a565bcaa0cc
1 /**
2 * Licensed to the Apache Software Foundation (ASF) under one
3 * or more contributor license agreements. See the NOTICE file
4 * distributed with this work for additional information
5 * regarding copyright ownership. The ASF licenses this file
6 * to you under the Apache License, Version 2.0 (the
7 * "License"); you may not use this file except in compliance
8 * with the License. You may obtain a copy of the License at
10 * http://www.apache.org/licenses/LICENSE-2.0
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an "AS IS" BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
19 package org.apache.hadoop.hbase.util;
21 import org.apache.yetus.audience.InterfaceAudience;
23 /**
24 * Utility class to manage a triple.
26 @InterfaceAudience.Private
27 public class Triple<A, B, C> {
28 private A first;
29 private B second;
30 private C third;
31 // default constructor
32 public Triple() {
36 public Triple(A first, B second, C third) {
37 this.first = first;
38 this.second = second;
39 this.third = third;
42 // ctor cannot infer types w/o warning but a method can.
43 public static <A, B, C> Triple<A, B, C> create(A first, B second, C third) {
44 return new Triple<>(first, second, third);
47 @Override
48 public int hashCode() {
49 int hashFirst = (first != null ? first.hashCode() : 0);
50 int hashSecond = (second != null ? second.hashCode() : 0);
51 int hashThird = (third != null ? third.hashCode() : 0);
53 return (hashFirst >> 1) ^ hashSecond ^ (hashThird << 1);
56 @Override
57 public boolean equals(Object obj) {
58 if (!(obj instanceof Triple)) {
59 return false;
62 Triple<?, ?, ?> otherTriple = (Triple<?, ?, ?>) obj;
64 if (first != otherTriple.first && (first != null && !(first.equals(otherTriple.first))))
65 return false;
66 if (second != otherTriple.second && (second != null && !(second.equals(otherTriple.second))))
67 return false;
68 if (third != otherTriple.third && (third != null && !(third.equals(otherTriple.third))))
69 return false;
71 return true;
74 @Override
75 public String toString() {
76 return "(" + first + ", " + second + "," + third + " )";
79 public A getFirst() {
80 return first;
83 public void setFirst(A first) {
84 this.first = first;
87 public B getSecond() {
88 return second;
91 public void setSecond(B second) {
92 this.second = second;
95 public C getThird() {
96 return third;
99 public void setThird(C third) {
100 this.third = third;