2013-04-17 116 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