подскажите, пожалуйста, почему валидатор не принимает Comparator.
TreeSet ведь как раз принимает Comparator
public TreeSet(Comparator<? super E> comparator) {
this((NavigableMap)(new TreeMap(comparator)));
}
или он сравнивает по Comparable?
вывод получился такой:
Petrov: рост 180
Afanasyev: рост 175
Sidorov: рост 175
Ivanov: рост 170
package com.javarush.task.task26.task2602;
import java.util.Comparator;
import java.util.Set;
import java.util.TreeSet;
/*
Был бы ум - будет и успех
*/
public class Solution {
public static void main(String[] args) {
Set<Soldier> soldiers = new TreeSet<>(new Comparator<Soldier>() {
@Override
public int compare(Soldier soldier, Soldier t1) {
int i = t1.height - soldier.height;
if(i == 0){
return soldier.name.compareTo(t1.name);
}
return i;
}
});
soldiers.add(new Soldier("Ivanov", 170));
soldiers.add(new Soldier("Petrov", 180));
soldiers.add(new Soldier("Sidorov", 175));
for (Soldier soldier : soldiers) {
System.out.println(soldier.name);
}
}
public static class Soldier {
private String name;
private int height;
public Soldier(String name, int height) {
this.name = name;
this.height = height;
}
}
}