配列をソートしたいという質問です。
調べた所ArrayListはこんな感じでソートできます。
ArrayAdapterは.sort()を使えばソートできます。
しかし、ググって見ても配列の中にあるデータが、Stringのみだったりintegerのみだったりします。
今ソートしたいのは、Itemという独自クラスです。
このクラスはprivateで様々なデータを抱えています。このうちのdoubleのデータの大小を比較して、ソートしたいのです。
つまり、Item.hogeを比較してソートしたいということです。何か良い知恵はありませんでしょうか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ベストアンサー
手元に環境がないのでリファレンスからの確認ですが、[ArrayAdapter.sort](http://developer.android.com/reference/android/widget/ArrayAdapter.html#sort(java.util.Comparator<? super T>))でできませんか?
ArrayAdapter.sort(new Comparator<Item>() { @Override public int compare(Item i1, Item i2) { return Double.compare(i1.getHoge(), i2.getHoge()); } });
投稿2016/03/05 09:28
総合スコア150
0
stack overflow(英語のプログラミング掲示板)に同じような質問が乗っていました。
そこでのベストアンサーを簡単に訳して記載します。
その前に、ArrayAdapterとArrayListについて
ArrayAdapterはArrayListのデータをListViewなどのViewにAdapt(適合)するためのクラスで、
コンストラクタメソッドの引数にArrayListを受け取ります。
ArrayAdapterは受け取ったデータを受け取った順にViewに配置します。
なので、質問者様が望む結果にするにはArrayListでソートされた状態になっていれば良いですよね?
ということで、下記はArrayListをdoubleをソートキーにしてソートする方法です。
以下、引用の訳
「arrayListのdouble値でのソート方法について」
質問者の掲載したソースの一部
(染色体クラスを定義し、そのデータにスコアをつけて、スコア順でソートしたいらしいです。)
lang
1public class Chromosome { 2 double score; 3 4 public void setScore(double score) { this.score = score; } 5 public double getScore() { return score; } 6}
arashajiiさんの回答:
Comparatorを使用してください:
lang
1Collections.sort(myList, new Comparator<Chromosome>() { 2 @Override 3 public int compare(Chromosome c1, Chromosome c2) { 4 return Double.compare(c1.getScore(), c2.getScore()); 5 } 6});
もしこの方法で数値によるリストのソートを考えているなら、
Comparableを継承してChromesomeを用いることを提案します。
(単に Collections.sort(myList)を呼び出す場合、Comparatorを明示的に特定する必要はありません)
stackoverflow:Sorting a double value of an object within an arrayList より
以上、
参考になりますでしょうか?
分からない場合、別途ご連絡ください。
P.S.
Collectionsクラスのリファレンスへのリンクは下記です。
Collectionsクラス
投稿2016/03/04 13:56
総合スコア396
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/03/05 09:00
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/03/05 09:44
2016/03/05 10:05
2016/03/05 11:03