私はオブジェクトのArrayListを持っています。オブジェクトには、属性date
とvalue
が含まれています。だから私はdate
上のオブジェクトを並べ替えると、同じ日付にすべてのオブジェクトについては、value
でそれらを並べ替えるしたいと思います。どうやってやるの?複数の属性にArrayListベースをソート
答えて
カスタムComparator
を実装してからCollections.sort(List, Comparator)
を使用してください。これはおそらく、このようになります。
public class FooComparator implements Comparator<Foo> {
public int compare(Foo a, Foo b) {
int dateComparison = a.date.compareTo(b.date);
return dateComparison == 0 ? a.value.compareTo(b.value) : dateComparison;
}
}
Collections.sort(foos, new FooComparator());
オブジェクトのクラスがComparableを実装する場合は、あなたがする必要があるすべてが適切に最初の日付を比較するcompareToメソッドをコーディングされ、日付が等しい場合、その後、値を比較しますその結果に基づいて適切なint結果を返します。
それとも、コンパレータでこれを行うことができます'と仮定上記のように、クラスをComparable ....を実装するようにしたくない場合は、選択します。コンパレータを使用する場合、compareメソッドは上記の私の提案を利用します。 –
したい場合は、以下を使用することができ、同様にサンプルコードが見えます:
Collections.sort(foos, new Comparator<Foo>{
public int compare(Foo a, Foo b) {
int dateComparison = a.date.compareTo(b.date);
return dateComparison == 0 ? a.value.compareTo(b.value) : dateComparison;
}
});
public static <T> void sort(List<T> list, final List<Comparator<T>> comparatorList) {
if (comparatorList.isEmpty()) {//Always equals, if no Comparator.
throw new IllegalArgumentException("comparatorList is empty.");
}
Comparator<T> comparator = new Comparator<T>() {
public int compare(T o1, T o2) {
for (Comparator<T> c:comparatorList) {
if (c.compare(o1, o2) > 0) {
return 1;
} else if (c.compare(o1, o2) < 0) {
return -1;
}
}
return 0;
}
};
Collections.sort(list, comparator);
}
Guavaの 'Ordering'クラスを参照してください:http://guava-libraries.googlecode.com/svn/trunk/javadoc/com/google/common/collect /Ordering.html –
- 1. オブジェクトArrayListをJavaの属性値でソート
- 2. リストを複数の属性でソートしますか?
- 3. 複数の属性
- 4. アルファベット順に複雑なオブジェクトのソートarraylist
- 5. jQuery複数のフィルタデータ属性
- 6. 複数のrel属性
- 7. mx:Treeに複数の属性を表示
- 8. Rapidminer、ソート、フィルタの属性
- 9. shibboleth:複数のLDAP属性に基づく解決属性
- 10. Typescriptの複数のフィールドでarraylistをソートする方法
- 11. Asp.Net Mvc複数属性ルーティング
- 12. 複数のArrayListをViewHolderに含むArrayList
- 13. レールレール5に複数の共有属性
- 14. SQL ONCE複数の属性にあっ
- 15. 複数のカレンダーを結合するsharepoint spquery arraylistソート
- 16. モデル属性に基づくバックボーンコレクションのソート
- 17. 複数の属性を持つMagentoソートコレクション
- 18. 複数の属性を持つFlexdashboardページ
- 19. のpython:変更ベース・クラス属性
- 20. OAuth 2+属性ベースの暗号化
- 21. ジョイントテーブルのJSON属性でActiveRecordリレーションをソート
- 22. BaseXの複数の属性の更新
- 23. 返信応答arraylistと1属性
- 24. HTMLの複数のクラス属性
- 25. 複数のオプションパラメータweb api属性のルーティング
- 26. NTFS複数の同様の属性
- 27. Pythonクラスの複数の属性
- 28. jquery複数の属性セレクタの問題
- 29. 複数の値のjQuery属性セレクタ
- 30. 複数の列属性のレール
[値]が... 'Comparable'を実装し、いくつかのクラスである – harto