
// Pair.java 
// https://github.com/aimacode/aima-java/tree/AIMA3e/aima-core/src/main/java/aima/core/

// Authors: Ravi Mohan, Mike Stampone, Ruediger Lunde
  


public class Pair<X, Y>
{
  private final X a;
  private final Y b;

  public Pair(X a, Y b)
  {
    this.a = a;
    this.b = b;
  }


  public X getFirst()
  {     return a;   }


  public Y getSecond()
  {     return b;   }


  @Override
  public boolean equals(Object o)
  {
    if (o instanceof Pair<?, ?>) {
      Pair<?, ?> p = (Pair<?, ?>) o;

      return ((a == null) ? (p.a == null) : a.equals(p.a)) &&
             ((b == null) ? (p.b == null) : b.equals(p.b));
    }
    return false;
  } // end of equals()


  @Override
  public int hashCode()
  {
    return ((a == null) ? 0 : a.hashCode()) + 
            31*((b == null) ? 0 : b.hashCode());
  }


  @Override
  public String toString()
  {
    return "< " + a.toString() + ", " + b.toString() + " > ";
  }

}  // end of Pair class
