Esclarecendo um pouco,
Para comparar objetos, usa-se o método equals(), herdado de Object. O código que renan_daniel mostrou está quase apropriado: ele pode lançar um ClassCastException em tempo de execução se o objeto passado não for do tipo Medico. Segue um código válido:
// sobreescrevendo o equals herdado de Object
public boolean equals(Object o) {
// primeiro, teste se o objeto passado é null
if(o != null) {
// agora, teste se "o" é um Medico
if(o instanceof Medico) {
// o cast aqui é válido
Medico m = (Medico) o;
boolean sameName = this.getName().equals(m.getName());
boolean samePhoneNumber = this.getPhoneNumber().equals(m.getPhoneNumber());
boolean sameSpeciality = this.getSpeciality().equals(m.getSpeciality());
// neste exemplo, "this" e "o" serão iguais se tiverem o mesmo
// nome, telefone e especialidade
return sameName && samePhoneNumber && sameSpeciality;
}
}
// se a execução chegou até aqui, é porque "o" não é igual
return false;
}
Pronto. Acredito que o código acima resolva seu problema. Tecnicamente, é recomendado que o método public int hashCode(), também de Object, seja sobreescrito. Explicar o quê são e para o quê servem hashcodes é uma historinha comprida, mas para seu caso, creio que o seguinte método seja bom o bastante:
public int hashCode() {
int nameHashCode = this.getName().hashCode();
int phoneNumberHashCode = this.getPhoneNumber().hashCode();
int specialityHashCode = this.getSpeciality().hashCode();
return nameHashCode + phoneNumberHashCode + specialityHashCode;
}
Espero tê-lo ajudado, e sem mais,