001 /* JAPI - (Yet another (hopefully) useful) Java API 002 * 003 * Copyright (C) 2004-2006 Christian Hujer 004 * 005 * This program is free software; you can redistribute it and/or 006 * modify it under the terms of the GNU General Public License as 007 * published by the Free Software Foundation; either version 2 of the 008 * License, or (at your option) any later version. 009 * 010 * This program is distributed in the hope that it will be useful, but 011 * WITHOUT ANY WARRANTY; without even the implied warranty of 012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 013 * General Public License for more details. 014 * 015 * You should have received a copy of the GNU General Public License 016 * along with this program; if not, write to the Free Software 017 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 018 * 02111-1307, USA. 019 */ 020 021 package net.sf.japi.util; 022 023 /** Lightweight class for data pairs. 024 * The hashcode of a pair is the combined hashcode of its values. 025 * @author <a href="mailto:chris@riedquat.de">Christian Hujer</a> 026 */ 027 public class Pair<T1,T2> { 028 029 /** First data element. */ 030 private final T1 first; 031 032 /** Second data element. */ 033 private final T2 second; 034 035 /** Create a Pair. 036 * @param first First data element 037 * @param second Second data element 038 */ 039 public Pair(final T1 first, final T2 second) { 040 this.first = first; 041 this.second = second; 042 } 043 044 /** Get first member of this pair. 045 * @return first member of this pair 046 */ 047 public T1 getFirst() { 048 return first; 049 } 050 051 /** Get second member of this pair. 052 * @return second member of this pair 053 */ 054 public T2 getSecond() { 055 return second; 056 } 057 058 /** {@inheritDoc} */ 059 @Override public boolean equals(final Object obj) { 060 if (obj == null || !(obj instanceof Pair)) { 061 return false; 062 } 063 final Pair<?,?> other = (Pair<?,?>) obj; 064 return first.equals(other.first) && second.equals(other.second); 065 } 066 067 /** {@inheritDoc} */ 068 @Override public int hashCode() { 069 return first.hashCode() ^ second.hashCode(); 070 } 071 072 } // class Pair