java: Comparateur et Treeset pour supprimer les doublons

j'ai une classe java comme ce

public class A {

    private String field1;
    private String field2;

    //getters, setters but no equals and hashcode
}

et une liste des objets de cette classe, je veux supprimer de cette liste toutes les copies des éléments qui a le même champ1 ou même champ2, donc, j'ai 2 Comparateurs

public class Comparator1 implements Comparator<A> {
    public int compare(A o1, A o2) {

        return o1.getField1().compareToIgnoreCase( o2.getField1() );
    }
}

public class Comparator2 implements Comparator<A> {
    public int compare(A o1, A o2) {

        return o1.getField2().compareToIgnoreCase(o2.getField2());
    }
}

afin de faire la tâche-je utiliser treeset comme

TreeSet<A> ts1 = new TreeSet<A>(new Comparator1())
ts1.addAll(list)

TreeSet<A> ts2 = new TreeSet<A>(new Comparator2())
ts2.addAll(ts1)

list.clear()
list.addAll(ts2)

mais comment puis-je faire la même chose en utilisant simplement un comparateur et un treeset ?

Merci pour l'aide

Mise à jour:

Merci à tous pour les réponses, mais après les avoir lu, je ne sais pas si c'est la bonne approche pour le problème réel.

Dans mon cas réel champ1 est comme un numéro de téléphone et champ2 est comme un nom.
Donc je ne veux pas appeler le même numéro de téléphone, plus d'une fois (c'est la première treeset d'supprime les doublons) et je ne veux pas l'appeler plusieurs fois le même nom (la deuxième treeset d'supprime les doublons)

Vous pouvez modifier la catégorie, mais j'aimerais savoir si cette approche est ok pour résoudre le vrai problème.

Si cette approche est correcte, à partir de votre question, je vois que, sans modifier la classe n'est pas possible d'utiliser un comparateur de

Grâce

L'ajout de equals() et hashCode() à A est donc pas une option? L'extension de A aussi non?
j'ai mis à jour la question

OriginalL'auteur res1 | 2011-04-09