2012-04-25 45 views
0

這是比較排序下降時如何實現升序排序嗎?這是如何在比較器排序下降時執行升序排序?

// Sorts the emails alphabetically by subject in ascending order. 
public void sortBySubjectAscending() 
{ 
Collections.sort(emails, Collections.reverseOrder(new Email.SubjectDescendingComparator())); 
} 
+5

我很想提交答案,只是說:「是的。」 ...... – aardvarkk 2012-04-25 16:57:31

+1

你有一個小的測試類試了一下? – radimpe 2012-04-25 16:57:43

回答

2

是的,它每次都重新初始化。如果反轉下降比較器,則會得到上升比較器。

要打破它,這是你在做什麼:

Comparator ascending = Collections.reverseOrder(new Email.SubjectDescendingComparator()); 
Collections.sort(emails, ascending); 
1

在被 「那個傢伙的StackOverflow」 風險...... :)

http://docs.oracle.com/javase/6/docs/api/java/util/Collections.html#reverseOrder%28%29

公共靜態比較reverseOrder()

返回一個比較這會在實現可比較接口的對象集合上強加自然順序的反轉。 (自然排序是 對象自己的compareTo方法施加的順序。)這使 排序(或維護)對象的集合(或陣列)的簡單方式成爲可能,該對象的集合(或陣列)以反向自然順序實現了Comparable接口。

這是教育要想想你將如何實現這個自己,的compareTo返回一個int,所有你需要做的就是反轉的結果....

0

是的,這是一個很好的解決方案

我個人倒有一個比較是靜態成員,所以你不需要你要排序,並有電子郵件也能夠給出一個ascendingComparator

public class Email{ 

    private static class SubjectDescendingComparator implements Comparable<Email>{ 
     //... 
    } 

    private static final Comparable<Email> subjectDescendingComparator =new SubjectDescendingComparator(); 
    private static final Comparable<Email> subjectAcendingComparator = Collections.reverseOrder(subjectDescendingComparator); 


    public static Comparable<Email> getDecendingSubjectComparator{ 
     return subjectDescendingComparator; 
    } 


    public static Comparable<Email> getAcendingSubjectComparator{ 
     return subjectAcendingComparator; 
    } 


} 
+0

我將如何更改方法使其變爲靜態? – nnn 2012-04-25 17:46:29

+0

@nnn檢查我的編輯,但添加靜態簽名就足夠了 – 2012-04-25 18:14:13