Если вы не вынуждены использовать массив для хранения оценки, я рекомендую использовать для него выделенный класс модели, который реализует интерфейс Comparable
.
public class Score implements Comparable<Score> {
final String name;
final int score;
public Score(String name, int score) {
this.name = name;
this.score = score;
}
@Override
public int compareTo(final Score that) {
return that.score - this.score;
}
@Override
public String toString() {
return String.format("Score[name=%s, score=%d]", name, score);
}
}
Текущая реализация сортирует descending
. Если вы хотите сортировать ascending
, тогда измените его на return this.score - that.score;
.
Вы можете использовать этот класс, как это:
public static void main(String[] args) {
final List<Score> scores = new ArrayList<>();
scores.add(new Score("Mike", 100));
scores.add(new Score("Jenny", 250));
scores.add(new Score("Gary", 75));
scores.add(new Score("Nicole", 110));
Collections.sort(scores);
for (final Score score : scores) {
System.out.println(score);
}
}
Выход будет:
Score[name=Jenny, score=250]
Score[name=Nicole, score=110]
Score[name=Mike, score=100]
Score[name=Gary, score=75]
Что вы имеете в виду "лучше"? Есть много способов, некоторые простые, некоторые сложные, все из них по сравнению с использованием встроенного сортировщика, такого как Collections.sort –
, вы можете использовать 'Collections.sort()' и написать свой собственный «компаратор». – BatScream
@ Mike'Pomax'Kamermans Я имел в виду простейший, я думаю. Как я могу использовать Collections.sort здесь? – cogm