У меня, кстати, и так все компилируется и работает.
Предлагаю два варианта решения:
1. Т.к. класс ComplexCompare, похоже, нигде больше не используется (и вряд ли будет) перенести его как анонимный в инициализацию TreeSet:
TreeSet<Complex> ts = new TreeSet<>(new Comparator<Complex>() {
@Override
public int compare(Complex o1, Complex o2) {
double re1 = o1.getRe(), im1 = o1.getIm(); //Все это можно упростить.
double re2 = o2.getRe(), im2 = o2.getIm();
if (re1 != re2) return (int)(re1 - re2);
else if (im1 != im2) return (int)(im1 - im2);
else return 0;
}
});
2. Сделать класс Complex implements Comparable и добавить соответствующий метод compareTo с аналогичным кодом: тогда и компараторы дополнительные не потребуются.