у меня есть такой класс java
public class A {
private String field1;
private String field2;
// getters, setters but no equals and hashcode
}
и список объектов этого класса, я хочу удалить из этого списка все дубликаты элементов, которые имеют одинаковое field1 или одинаковое field2, поэтомуу меня есть 2 компаратора
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());
}
}
, поэтому для выполнения задачи я использую набор деревьев, например
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)
, но как мне сделать то же самое, используя только один компаратор и один набор деревьев?
Спасибо за помощь
Обновление:
Спасибо всем за ответы, но после прочтения их я не знаю, правильный ли это подход к реальной проблеме.
В моем реальном случае поле 1 похоже на номер телефона, а поле 2 - на имя.Поэтому я не хочу вызывать один и тот же номер телефона более одного раза (это первый набор деревьев, который удаляет дубликаты), и я не хочу вызывать более одного раза одно и то же имя (второй набор деревьев, который удаляет дубликаты)
Вы можете изменить класс, но я хотел бы знать, подходит ли этот подход для решения реальной проблемы.
Если этот подход верен, из вашего вопроса я вижу, что без измененияКласс не возможно использовать только один компаратор
Спасибо