001/* 002 * Licensed to the Apache Software Foundation (ASF) under one 003 * or more contributor license agreements. See the NOTICE file 004 * distributed with this work for additional information 005 * regarding copyright ownership. The ASF licenses this file 006 * to you under the Apache License, Version 2.0 (the 007 * "License"); you may not use this file except in compliance 008 * with the License. You may obtain a copy of the License at 009 * 010 * http://www.apache.org/licenses/LICENSE-2.0 011 * 012 * Unless required by applicable law or agreed to in writing, 013 * software distributed under the License is distributed on an 014 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 015 * KIND, either express or implied. See the License for the 016 * specific language governing permissions and limitations 017 * under the License. 018 */ 019package org.apache.reef.wake.remote.impl; 020 021/** 022 * Tuple with two values. 023 * 024 * @param <T1> 025 * @param <T2> 026 */ 027public class Tuple2<T1, T2> { 028 029 private final T1 t1; 030 private final T2 t2; 031 032 public Tuple2(final T1 t1, final T2 t2) { 033 this.t1 = t1; 034 this.t2 = t2; 035 } 036 037 public T1 getT1() { 038 return t1; 039 } 040 041 public T2 getT2() { 042 return t2; 043 } 044 045 @Override 046 public int hashCode() { 047 return t1.hashCode() + 31 * t2.hashCode(); 048 } 049 050 @Override 051 public boolean equals(final Object o) { 052 if (this == o) { 053 return true; 054 } 055 if (o == null || getClass() != o.getClass()) { 056 return false; 057 } 058 final Tuple2<T1, T2> tuple = (Tuple2<T1, T2>) o; 059 return t1.equals((Object) tuple.getT1()) && t2.equals((Object) tuple.getT2()); 060 } 061 062 public String toString() { 063 return t1.toString() + " " + t2.toString(); 064 } 065}