class Coin5 { String name; int val; Coin5(String name, int val) { this.name=name; this.val=val; } public String toString() { return name + "=" + val + "$ (hashcode = " + hashCode() + ")"; } public boolean equals(Object obj) { if (obj==null) return false; if (getClass() != obj.getClass()) return false; Coin5 otherCoin = (Coin5)obj; return (otherCoin.name.equals(name) && otherCoin.val==val); } public int hashCode() { int h1 = name.hashCode(); int h2 = new Integer(val).hashCode(); final int HASH_MULTIPLIER = 29; //prime int h = HASH_MULTIPLIER * h1 + h2; return h; } public static void main(String [] args) { Coin5 a = new Coin5("toonie",2); Coin5 b = new Coin5("toonie",2); Coin5 c = new Coin5("loonie",1); Coin5 d = a; System.out.println("a: " + a); System.out.println("b: " + b); System.out.println("c: " + c); System.out.println("d: " + d); } }