class Person2 implements Comparable {
    private String namn;
    private int ålder;

    Person2 (String namn, int ålder) {
	this.namn = namn;
	this.ålder = ålder;
    }

    // Alla personer över 65 får företräde
    public int compareTo (Object o) {

	Person2 p = (Person2)o;
	if (ålder >= 65 & p.ålder < 65) {return -1;}
	else if (ålder < 65 & p.ålder >= 65) {return 1;}
	else {
	    int t = namn.compareTo(p.namn);
	    if (t!=0) { return t;}
	    else if (ålder < p.ålder) {return -1;}
	    else if (ålder == p.ålder) {return 0;}
	    else return 1;
	}
    }

    // En klass som definierar compareTo bör äved definiera equals och
    // hashCode

    public boolean equals (Object o) {
	return o instanceof Person2 
	    && ((Person2)o).namn.equals(namn) 
	    && ((Person2)o).ålder == ålder;
    }

    public int hashCode() {
	return namn.hashCode()*131+ålder;
    }
    // Det bör vara osannolikt att två personer som har olika namn
    // eller ålder får samma hashkod.

    public String toString() {
	return "Person2["+namn+", "+ålder+"]";
    }
}
