Создайте класс с именем UsernameScorePair
.После того, как вы разделите оценки и имена пользователей, поместите их в пары (по одной для каждого «показателя и имени пользователя»).
Например, это определение класса может работать:
открытый класс UsernameScorePair {
private String name;
private int score;
public UsernameScorePair(String name, int score) {
this.name = name;
this.score = score;
}
public String getName() {
return name;
}
public int getScore() {
return score;
}
}
Создайте класс с именем UsernameScorePairComparator
, который реализует Comparator
.
В методе compare(Object o1, Object o2)
приведите Objects к UsernameScorePairs и сравните оценки.Например:
public class UsernameScorePairComparator {
public UsernameScorePairComparator() {
}
public int compare(Object o1, Object o2) {
UsernameScorePair usp1 = (UsernameScorePair)o1;
UsernameScorePair usp2 = (UsernameScorePair)o2;
return usp1.getScore() - usp2.getScore();
}
}
Затем используйте Collections.sort
следующим образом:
Collections.sort(listofpairs, new UsernameScorePairComparator())
Я не помню, сортируется ли он в порядке возрастания или убывания.Если это возрастающий порядок, то просто измените return usp1.getScore() - usp2.getScore();
на return usp2.getScore() - usp1.getScore();
EDIT
A Comparator
в основном сравнивает два объекта.В своем методе compareTo
он возвращает отрицательное значение, если первое меньше второго, положительное, если первое больше второго, и ноль, если они оба равны.
Вы можете реализоватьComparator
(как я только что сделал), чтобы удовлетворить ваши потребности.Затем, используя Comparator
, вы можете использовать стандартные методы API, такие как Collections.sort()
.
Надеюсь, это сработает!