Lo he solucionado cambiando el atributo en el compareTo() que tenía sobreescrito en el bean. Comparando por el número de contrato y con la línea anterior me he generado un TreeSet sin elementos repetidos y ordenado.
Código:
public int compareTo(Object o) {
ContratoBean bean = (ContratoBean) o;
String pk1 = this.numcontrato;
String pk2 = bean.numcontrato;
return pk1.compareTo(pk2);
}
Gracias a todos por vuestras respuestas :)