どうすればandroid.util.SparseArrayをソートできますか? たとえば、次の SparseArray があります:
1 - 2.33
5 - 1.5
結果:
5 - 1.5
1 - 2.33
ありがとう!!!
-- 編集済み
マップを使用しました。手伝ってくれてありがとう。
どうすればandroid.util.SparseArrayをソートできますか? たとえば、次の SparseArray があります:
1 - 2.33
5 - 1.5
結果:
5 - 1.5
1 - 2.33
ありがとう!!!
-- 編集済み
マップを使用しました。手伝ってくれてありがとう。
キーまたは値のソート順を要求したかどうかは明確ではありません...
だからただのメモ:
二分検索はソートされたデータに対してのみ機能し、SparseArray はsourceに従ってソートされた (!) キー配列に対して二分検索を使用します。そのため、キーは既にソートされており、値からの順序のような別の順序は受け入れられません。
ツリーマップを使用できます。キーでソートされたエントリを保持します (キーは Comparable を実装する必要があります)。
SparseArray.javaの基礎となるソース コードから判断すると、単にメソッドを呼び出すだけではそれを行うことはできません。a はすべて、 typeとSpareArray
type の 2 つの Java 言語配列です。これらの配列はプライベート インスタンス変数であり、リフレクションなしでは参照できません (名前が変わる可能性があるため危険です)。適切な解決策は、アプリケーションのコードをローカライズし、通常の Java 手法を使用してメソッドを追加することです (つまり、Array.sort ) 。int
Object
SpareArray
sort
更新しました:
private SparseIntArray void sortMap(SparseIntArray unsorted) {
SparseIntArray sortedSparseIntArray = new SparseIntArray();
while (unsorted.size() > 0) {
int min = Integer.MAX_VALUE;
int minIndex = 0;
for (int i = 0; i < unsorted.size(); i++) {
if (unsorted.keyAt(i) <= min) {
min = unsorted.keyAt(i);
minIndex = i;
}
}
sortedSparseIntArray.put(min, unsorted.get(min));
sFactorsMap.removeAt(minIndex);
}
return sortedSparseIntArray;
}
キー/値をリストに収集します。
List<Integer>keys = Lists.newArrayList();
List<Integer>vals = Lists.newArrayList();
SparseArray<Integer>arr;
for(int i =0; i < arr.size();i++){
keys.add(arr.keyAt(i));
values.add(arr.valueAt(i));
}
Collections.sort(keys);// sort
Collections.sort(vals);
// then fill your array again.
arr.clear();
//...
arr.put()