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
;
24 * Utility class to manage a triple.
26 @InterfaceAudience.Private
27 public class Triple
<A
, B
, C
> {
31 // default constructor
36 public Triple(A first
, B second
, C 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
);
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);
57 public boolean equals(Object obj
) {
58 if (!(obj
instanceof Triple
)) {
62 Triple
<?
, ?
, ?
> otherTriple
= (Triple
<?
, ?
, ?
>) obj
;
64 if (first
!= otherTriple
.first
&& (first
!= null && !(first
.equals(otherTriple
.first
))))
66 if (second
!= otherTriple
.second
&& (second
!= null && !(second
.equals(otherTriple
.second
))))
68 if (third
!= otherTriple
.third
&& (third
!= null && !(third
.equals(otherTriple
.third
))))
75 public String
toString() {
76 return "(" + first
+ ", " + second
+ "," + third
+ " )";
83 public void setFirst(A first
) {
87 public B
getSecond() {
91 public void setSecond(B second
) {
99 public void setThird(C third
) {