質問: 配列をソートしたいという質問です。 調べた所ArrayListはこんな感じでソートできます。 ArrayAdapterは.sort()を使えばソートできます。 しかし、ググって見ても配列の中にあるデータが、Stringのみだったりintegerのみだったりします。 今ソートしたいのは、Itemという独自クラスです。 このクラスはprivateで様々なデータを抱えています。このうちのdoubleのデータの大小を比較して、ソートしたいのです。 つまり、Item.hogeを比較してソートしたいということです。何か良い知恵はありませんでしょうか?
回答: stack overflow(英語のプログラミング掲示板)に同じような質問が乗っていました。 そこでのベストアンサーを簡単に訳して記載します。 その前に、ArrayAdapterとArrayListについて ArrayAdapterはArrayListのデータをListViewなどのViewにAdapt(適合)するためのクラスで、 コンストラクタメソッドの引数にArrayListを受け取ります。 ArrayAdapterは受け取ったデータを受け取った順にViewに配置します。 なので、質問者様が望む結果にするにはArrayListでソートされた状態になっていれば良いですよね? ということで、下記はArrayListをdoubleをソートキーにしてソートする方法です。 以下、引用の訳 「arrayListのdouble値でのソート方法について」 質問者の掲載したソースの一部 (染色体クラスを定義し、そのデータにスコアをつけて、スコア順でソートしたいらしいです。) ``` public class Chromosome { double score; public void setScore(double score) { this.score = score; } public double getScore() { return score; } } ``` arashajiiさんの回答: Comparatorを使用してください: ``` Collections.sort(myList, new Comparator() { @Override public int compare(Chromosome c1, Chromosome c2) { return Double.compare(c1.getScore(), c2.getScore()); } }); ``` もしこの方法で数値によるリストのソートを考えているなら、 Comparableを継承してChromesomeを用いることを提案します。 (単に Collections.sort(myList)を呼び出す場合、Comparatorを明示的に特定する必要はありません) stackoverflow:Sorting a double value of an object within an arrayList より 以上、 参考になりますでしょうか? 分からない場合、別途ご連絡ください。 P.S. Collectionsクラスのリファレンスへのリンクは下記です。 Collectionsクラス