2016-04-11 19 views
1

私はarreyListにコンパレータを使用してクラスobectsをソートしていますし、arrylistを使用してユーザー定義のソート定義に従ってクラスオブジェクトを並べ替える方法は?

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」は、第1の、その「TN」の後、最後の
「KE」の「AP」は、私が自分で 結果を得ることができるように

+2

出力は 'price = 0'しか表示しないので、問題は' SortingObject'クラスにあり、比較自体ではないようです。問題を見つけるために、このクラスを私たちのために含めることができます。 – 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

おかげで助けを得ました:-) –

関連する問題