2017-04-24 15 views
1

コレクションフレームワークのComparatorオブジェクトを使用して、特定の属性でArrayListをソートしたいとします。コレクションを使用した配列リストの並べ替え

measureEviArrayというArrayListがあります。この配列にはオブジェクトタイプMeasureEviが含まれています。

クラスMeasureEviには、PointFデータタイプに対応するmCoordenateという属性があります。

public class MeasureEvi { 

private int mIndex;        // 
private int mOrderIndex; 
private int eIndex;        // 
private TextView mTag;       // 
private PointF mCoordenate; 
} 

私がしたいことはXの各オブジェクトに与えられたcoordenatesに応じて、その配列を整理することです(mCoordenate.x

は、それが可能にマイナーからアレイOrdenateを、このためにコレクションを使用して取得することですX軸で最大?私はこの方法を実装しようとしていた

Collections.sort(measureEviArray, new Comparator<MeasureEvi>() { 
     @Override 
     public int compare(MeasureEvi measureEvi, MeasureEvi t1) { 
      return measureEvi.getmCoordenate().x.compareTo(t1.getmCoordenate().x); 
     } 
    }); 

をしかし、のcompareToはオプションではありません、方法を解決することはできません。 PointFからx以来

+0

は 'X' 'int'ですか?もしそうなら、 'Integer.compare(x1、x2)'を使います。 – shmosel

答えて

2

floatで、Float.compare(float f1, float f2)を使用します。

return Float.compare(measureEvi.getmCoordenate().x, t1.getmCoordenate().x); 
+0

はい、魅力のように動作します、ありがとう! – Juanca

+0

これを使ってIntegerを比較すると、アンドロイド<4.4で動作するかどうかを知っていますか?以下のような観測があります:@Requires API 4.4 KITKATを追加してください – Juanca

+0

@Juanca ['Integer.compare x、int y) '](https://developer.android.com/reference/java/lang/Integer.html#compare(int、%20int))、「APIレベル19で追加されました( https://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels)」と表示され、そのリンクに続いてAndroid 4.4であることが示されます。 – Andreas

関連する問題