2013-04-17 114 views
0

你好我試圖從一個ArrayList中的最高值到最低值的浮動列表進行排序。使用比較器來比較對象內的浮動列表

CustomObject保存一個對象,該對象的值爲float。

到目前爲止,我正在這樣做(失敗,沒有做任何事情)。

Collections.sort(mNaturalResistanceBoxes, new Comparator <PercentageBox>() { 
    public int compare(PercentageBox o1, PercentageBox o2) { 
     return o1.mCountry.mNaturalResistance 
      < o2.mCountry.mNaturalResistance ? -1 : 
      o1.mCountry.mNaturalResistance > o2.mCountry.mNaturalResistance ? 1 : 0; 
    } 
}); 

任何人都可以讓我知道我哪裏會出錯嗎?

+0

你知道,花車不能完全有序的,對不對?如果你包含NaN,那甚至不是預購。 – Antimony

+0

沒有意義,完全有序? –

+0

@OlylyDixon一切似乎都很好。你有任何錯誤或他們沒有排序?會發生什麼 – Eugene

回答

6

您的代碼工作完美:

import java.util.ArrayList; 
import java.util.Collections; 
import java.util.Comparator; 
import java.util.List; 

public class Snippet { 

    static class Country { 

     float mNaturalResistance; 
    } 

    static class PercentageBox { 

     Country mCountry = new Country(); 
    } 

    public static void main(final String[] args) { 
     List<PercentageBox> mNaturalResistanceBoxes = new ArrayList<Snippet.PercentageBox>(); 
     for (int i = 0; i < 4; i++) { 
      mNaturalResistanceBoxes.add(new PercentageBox()); 
     } 

     mNaturalResistanceBoxes.get(0).mCountry.mNaturalResistance = 3.3f; 
     mNaturalResistanceBoxes.get(1).mCountry.mNaturalResistance = 2.2f; 
     mNaturalResistanceBoxes.get(2).mCountry.mNaturalResistance = 4.4f; 
     mNaturalResistanceBoxes.get(3).mCountry.mNaturalResistance = 1.1f; 

     Collections.sort(mNaturalResistanceBoxes, new Comparator<PercentageBox>() { 

      @Override 
      public int compare(final PercentageBox o1, final PercentageBox o2) { 
       return o1.mCountry.mNaturalResistance < o2.mCountry.mNaturalResistance ? -1 
        : o1.mCountry.mNaturalResistance > o2.mCountry.mNaturalResistance ? 1 : 0; 
      } 
     }); 

     for (PercentageBox box : mNaturalResistanceBoxes) { 
      System.out.println(box.mCountry.mNaturalResistance); 
     } 
    } 
} 

輸出:

1.1 
2.2 
3.3 
4.4