2016-04-11 25 views
1

我正在排序在arreyList使用比較器類obects和我是 得到排序對象,如果低於如何根據用戶使用arrylist定義排序來對類對象進行排序?根據由比較器的名稱<br> 源按字母順序

public static Comparator<SortingObjects StuNameComparator = new Comparator<SortingObjects() { 

    public int compare(SortingObjects s1, SortingObjects s2) {     
     String StudentName1 = s1.getName().toUpperCase();      
     String StudentName2 = s2.getName().toUpperCase();      
     int c;                 

     c = StudentName1.compareTo(StudentName2);        



     if(c==0){                
      int rollno1 = s1.getPrice();          
      int rollno2 = s2.getPrice();          
      c = rollno1-rollno2;           
     }                  


     return c;                

    }}; 

及其給出導致像:

Student Name Sorting: 


    [ name=AP, price =0] 
    [ name=AP, price =0] 
    [ name=AP, price =0] 
    [ name=AP, price =0] 
    [ name=CH, price =0] 
    [ name=CH, price =0] 
    [ name=CH, price =0] 
    [ name=CH, price =0] 
    [ name=KE, price =0] 
    [ name=KE, price =0] 
    [ name=TN, price =0] 

但我想輸出像:

[ name=CH, price =3]  
    [ name=CH, price =10] 
    [ name=AP, price =2] 
    [ name=AP, price =2] 
    [ name=AP, price =7] 
    [ name=AP, price =10] 
    [ name=TN, price =15] 
    [ name=KE, price =2] 
    [ name=KE, price =5] 

這意味着:「CH」是第一位的,然後「AP」後「TN」,最後
「KE」有什麼辦法來實現比較方法,以便我能得到 結果通過自己限定訂購

+2

您的問題似乎是在'SortingObject'類,而不是比較本身,因爲輸出只顯示'價格= 0'。你可能想要爲我們添加這個類,以便找到問題。 – SomeJavaGuy

+0

只有名稱或價格,沒有辦法像你想要的那樣排序,因爲它不遵循任何順序。 – dambros

+1

您正在尋找什麼類型的訂購?你的問題沒有定義任何順序。 – Sanjeev

回答

1

你可以將您的訂貨存入數組,並用它來比較:

public static Comparator<SortingObjects StuNameComparator = new Comparator<SortingObjects() { 
    List ordering = Arrays.asList("CH","AP","TN","KE"); 
    public int compare(SortingObjects s1, SortingObjects s2) {     

     return ordering.indexOf(s1.name) - ordering.indexOf(s2.name);                

    }}; 

這僅僅是一個片段,這個應該怎麼想。

+0

thanx幫忙:-) –

相關問題