2016-04-22 3 views
0

Мне показалось, что я не сделал свой вопрос достаточно ясным в другой теме, поэтому я использую эту, чтобы сузить то, что я пытаюсь спросить.from array.sort() to compareTo()

Скажите, что я пытаюсь сортировать массив, содержащий два твитов по имени авторов:

public class Tweet implements Comparable { 
    private String mName; 

    public Tweet(String name) { 
    mName = name; 
    } 

    public int compareTo(Object obj) { 
     Tweet tempArrays = [Tweet] arrays; 
     return mName.compareTo(tempArrays.mName); 
    } 

    } 

Затем переопределить СотрагеТо(), а затем

Tweet new tweetOne = tweet("Andy") 
    Tweet new tweetTwo = tweet("Bob") 
    Array[] arrays = {tweetOne, tweetTwo} 
    Array.sort(arrays); 

ли последняя строка примерно перевести :

return "Andy".compareTo("Bob"); 

Спасибо за вашу помощь.

+1

это опечатка 'общественного класс реализует Сопоставимым Tweet '? потому что это должно быть как «public class Tweet реализует Comparable» –

ответ

1

Ваш класс должен выглядеть следующим образом

public class Tweet implements Comparable { 
    private String mName; 

    public Tweet(String name) { 
    mName = name; 
    } 

    public int compareTo(Object obj) { 
    Tweet tempTweet = (Tweet) obj; 
    return mName.compareTo(tempTweet.mName); 
    } 
} 

И тогда вы можете отсортировать массив как это:

Tweet[] tweets = new Tweet[]{ Tweet("Andy"),Tweet("Bob")}; 

Arrays.sort(tweets); 

Надеется, что это помогает

+0

Я пытаюсь понять, как работает метод compareTo(), но не вручную сортировка твитов: | – kshatriiya

+0

Когда вы вызываете Arrays.sort, он сравнивает объекты по сопоставимой реализации, поэтому управление переходит к методу compareTo и работает – Sanjeev

+0

@kshatriiya: Вот [исходный код OpenJDK для массивов] (http://grepcode.com/file/repository. grepcode.com/java/root/jdk/openjdk/6-b14/java/util/Arrays.java). Начните с метода sort (Object [], int, int, Comparator), перейдите к методу mergeSort (Object [], Object [], int, int, int, Comparator) и продолжайте следовать за кодом, пока не будете что разработчики Java правильно выполнили сортировку. –

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