所以我需要排序的SharedPreferences,得到浮点数在它。
所以我用;
添加数据SharedPreferences.Editor editor = getSharedPreferences(
"Huskr_headline", 0).edit();
editor.putFloat(tilfoejopgave_headline.getText().toString(), Float.valueOf(tilfoejopgave_klokken.getText().toString()));
editor.commit();
并使用;
获取数据SharedPreferences Huskr_headline = getSharedPreferences(
"Huskr_headline", 0);
TreeMap<String, ?> Huskr_headline_treemap = new TreeMap<String, Object>(
Huskr_headline.getAll());
for (Map.Entry<String, ?> entry : Huskr_headline_treemap.entrySet()) {
}
输出值;
10、12、14、17、8、81、9
当我想让它依次输出值时;
8,9,10,12,14,17,81
如何让它做到这一点?键在String..中是随机的。我想我需要按值排序,但是怎么做呢?
谢谢
为TreeMap
提供一个自定义的Comparator
,它将根据您的需要对映射中的条目进行排序。
OP.
找到答案
使用private static Map sortByComparator(Map unsortMap)
List list = new LinkedList(unsortMap.entrySet());
// sort list based on comparator
Collections.sort(list, new Comparator() {
public int compare(Object o1, Object o2) {
return ((Comparable) ((Map.Entry) (o1)).getValue())
.compareTo(((Map.Entry) (o2)).getValue());
}
});
// put sorted list into map again
// LinkedHashMap make sure order in which keys were inserted
Map sortedMap = new LinkedHashMap();
for (Iterator it = list.iterator(); it.hasNext();) {
Map.Entry entry = (Map.Entry) it.next();
sortedMap.put(entry.getKey(), entry.getValue());
}
return sortedMap;
}
这;
SharedPreferences Huskr_headline_conn = getSharedPreferences(
"Huskr_headline", 0);
Map<String, ?> Huskr_headline = Huskr_headline_conn.getAll();
Map<String, String> sortedMap = sortByComparator(Huskr_headline);
for (Map.Entry entry : sortedMap.entrySet()) {
}
在http://www.mkyong.com/java/how-to-sort-a-map-in-java/