Попытка сортировки массива String, который содержит имена участников в соответствии с массивом баллов, который содержит их оценки для викторины. Мне удалось отсортировать баллы от наивысшего до самого низкого, но имена находятся в неправильных позициях.Java - сортировка массива имен в соответствии с их результатами
-1
A
ответ
2
Ну, вот где Object
сделает вашу жизнь невероятно легкой. Не обрабатывайте несколько массивов. Обрабатывать один массив типа Person
.
public class Person {
private String name;
private int score;
public Person(String name, int score) {
this.name = name;
this.score = score;
}
// you'll need some getters and setters!
}
И теперь вы можете реализовать интерфейс Comparable
. Это позволяет сортировать. Например ..
public class Person implements Comparable<Person>
, и это заставит вас реализовать метод compareTo
..
public int compareTo(Person other)
{
if(other.getScore() > this.score) return -1;
if(other.getScore() < this.score) return 1;
return 0;
}
Тогда вы получите вызов метода Collections.sort
сортировать его для вас ..
List<Person> myPeople = new ArrayList<Person>();
// Populate it..
Collections.sort(myPeople);
Дополнительная информация
Читайте также на странице Collections class.
Читайте также на странице Comparable Interface.
Сообщить об ошибке Object Oriented Design Principles in Java.
Есть ли способ сделать это, не используя объекты? – John
Могу сказать, что делать это без объектов создаст неуправляемый и чрезмерно сложный код! – christopher