2

CricketLiveScore のオブジェクトを含む ArrayList があります

  CricketLiveScore{
     String homeAbbrevation;
   }

   List myList=new ArrayList<CricketLiveScore>();
   CricketLiveScore c1=new CricketLiveScore();
   c1.setHomeAbbrevation("IND vs PAK");
   CricketLiveScore c2=new CricketLiveScore();
   c2.setHomeAbbrevation("SRI vs NWZ");
   CricketLiveScore c3=new CricketLiveScore();
   c3.setHomeAbbrevation("AUS vs BAN");
   CricketLiveScore c4=new CricketLiveScore();
   c4.setHomeAbbrevation("NWZ vs IND");

   list.add(c1);
   list.add(c2);
   list.add(c3);
   list.add(c4);

この Arraylist を Object に基づいて値 IND をホームの略語で並べ替える必要があります リストを並べ替えて、最初に IND の値が含まれていることを出力に示す必要があるように、誰かがこれを手伝ってくれますか?

4

5 に答える 5

2

これを試して:

public class CricketLiveScoreComparator implements Comparator<CricketLiveScore> {
    @Override
    public int compare(CricketLiveScore c1, CricketLiveScore c2) {
        return c1.getHomeAbbrevation().compareTo(c2.getHomeAbbrevation());
    }
}

次に、並べ替え操作を呼び出します。

Collections.sort(myList, new CricketLiveScoreComparator());
于 2013-06-07T13:07:07.873 に答える
1
  public class CricketSort implements Comparator<CricketLiveScore> {

    String countryOnTop;

    public CricketSort(String countryOnTop) {
        this.countryOnTop = countryOnTop;
    }

    @Override
    public int compare(CricketLiveScore o1, CricketLiveScore o2) {
        if (o1.homeAbbrevation.contains(countryOnTop)) {
            return -1;
        }
        if (o2.homeAbbrevation.contains(countryOnTop)){
            return 1;
        }
        return o1.homeAbbrevation.compareTo(o2.homeAbbrevation);
    }

    public static void main(String[] args) {
        // ....stuff
        Collections.sort(scoreList, new CricketSort("IND"));
    }

}

動作するはずです。

于 2013-06-07T13:23:14.790 に答える
0

Ok !これを行うために独自のコンパレーターを取得しました

      class CricketSort implements Comparator<CricketLiveScore> 
     { 
        String countryOnTop; 

         public CricketSort(String countryOnTop) { 
                this.countryOnTop = countryOnTop;
       }

      @Override 
      public int compare(CricketLiveScore o1, CricketLiveScore o2) { 
             if (o1.homeAbbrevation.contains(countryOnTop)) {
                  return -1; 
                  } 
             if (o2.homeAbbrevation.contains(countryOnTop)) { 
                  return 1; 
                  } 
           return o1.homeAbbrevation.compareTo(o2.homeAbbrevation);
             } 
         }

    }

それは私にとって完璧に機能しています

于 2013-06-10T07:15:23.070 に答える
0

カスタムコンパレータが必要です。ここに例を示します。

于 2013-06-07T13:03:42.873 に答える