使用TreeMap排序SharedPreferences -没有正确排序



所以我需要排序的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/

找到的函数

最新更新