Я довольно новичок в java, поэтому вопрос. Моя задача - создать класс Checker, который использует сортировщик для сортировки игроков. Логика сортировки состоит в том, чтобы сортировать игроков в порядке убывания по счету, а затем, если у двух игроков одинаковый балл, тот, чье имя лексикографически больше, должен появиться первым.Использование Java Comparator
Это класс игрока
class Player
{
String name;
int score;
}
Компаратор вызывается таким образом
Checker check=new Checker();
.................
Arrays.sort(Player,check.desc);
Это то, что я пытался,
class Checker implements Comparator<Player>{
public int compare(Player p1, Player p2){
if(p1.score < p2.score) return 1;
else if(p1.score > p2.score) return -1;
else if(p1.score == p2.score){
if(p1.name.compareTo(p2.name) < 0) return 1;
else if(p1.name.compareTo(p2.name) > 0) return -1;
else if (p1.name.compareTo(p2.name) == 0) return 0;
}
}
}
Может кто-нибудь помочь мне получить это право. Я действительно не понимаю, как desc
может быть атрибутом класса checker
.
«Я действительно не понимаю, как desc может быть атрибутом класса проверки». Ну, это не так, если вы не добавите его. Но вам не нужно ничего добавлять, если вы всегда хотите сортировать в определенном порядке (будь то восходящий или нисходящий) - просто заставьте логику вернуть правильное значение для этого фиксированного порядка. –
Я назвал компаратора desc, а затем удалил его, так как не мог понять его. – Zeus
не пропускайте класс PLayer, передайте вместо этого список, содержащий игроков –