如何排序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 根据源对其排序 (!) 键数组使用二进制搜索。所以键已经排序并且不会接受不同的顺序,比如值的顺序。
您可以使用树图。它保持条目按其键排序(键必须实现 Comparable)。
从SparseArray.java的底层源代码来看,你不能简单地通过调用一个方法来做到这一点。所有 aSpareArray
都是两个 Java 语言数组,一个是 type int
,一个是 type Object
。这些数组是私有实例变量,没有反射就不能引用它们(这很危险,因为它们的名称可能会改变)。一个好的解决方案可能是本地化SpareArray
应用程序中的代码并sort
使用普通 Java 技术添加一个方法,即Array.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()