2014-11-23 2 views
-1

Попытка сортировки массива String, который содержит имена участников в соответствии с массивом баллов, который содержит их оценки для викторины. Мне удалось отсортировать баллы от наивысшего до самого низкого, но имена находятся в неправильных позициях.Java - сортировка массива имен в соответствии с их результатами

ответ

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); 

Дополнительная информация

+0

Есть ли способ сделать это, не используя объекты? – John

+0

Могу сказать, что делать это без объектов создаст неуправляемый и чрезмерно сложный код! – christopher

Смежные вопросы