      1  /**

      2     A country with a name and area.

      3  */

      4  public class Country

      5  {

      6     private String name;

      7     private double area;

      8

      9     /**

     10        Constructs a country.

     11        @param aName the name of the country

     12        @param anArea the area of the country

     13     */

     14     public Country(String aName, double anArea)

     15     {

     16        name = aName;

     17        area = anArea;

     18     }

     19

     20     /**

     21        Gets the country name.

     22        @return the name

     23     */

     24     public String getName()

     25     {

     26        return name;

     27     }

     28

     29     /**

     30        Gets the area of the country.

     31        @return the area

     32     */

     33     public double getArea()

     34     {

     35        return area;

     36     }

     37

     38     public int hashCode()

     39     {

     40        int h1 = name.hashCode();

     41        int h2 = new Double(area).hashCode();

     42        final int HASH_MULTIPLIER = 29;

     43        int h = HASH_MULTIPLIER * h1 + h2;

     44        return h;

     45     }

     46

     47     public boolean equals(Object otherObject)

     48     {

     49        Country other = (Country) otherObject;

     50        return name.equals(other.name)

     51           && area == other.area;

     52     }

     53

     54     public String toString()

     55     {

     56        return getClass().getName() + "[name=" + name

     57           + ",area=" + area + "]";

     58     }

     59  }