java - 在android中对 map 进行排序

标签 java android sorting dictionary

我有以下方法,我从 Android 共享首选项中读取数据,我想知道当条目值为 <String,capture<?>> 时是否有一种方法可以按值对 map 进行排序.我正在写信给与 putString("name",int score) 共享的首选项.

public String readScores(){
        String returnString = "";
        int iterator = 1;
        SharedPreferences shared = getSharedPreferences("highscores", MODE_PRIVATE);
        Map<String, ?> values = shared.getAll();
        for (Map.Entry<String, ?> entry : values.entrySet())
        {
            returnString += "<tr><td>" + String.valueOf(iterator) + "</td><td>" + entry.getKey() + "</td><td>" + String.valueOf(entry.getValue()) + "</td></tr>";
            iterator++;
        }
        return returnString;
    }

最佳答案

您可以从条目集中创建一个列表,然后使用 Collections.sort 对该列表进行排序。

//test data
Map<String, String> values = new HashMap<>();   
values.put("foo", "c");
values.put("bar", "b");
values.put("baz", "a");

for (Map.Entry<String, String> entry : values.entrySet()) {
    System.out.println(entry);
}

System.out.println("-----------sort by value-----------");

List<Map.Entry<String, String>> entries = new ArrayList(values.entrySet());
Collections.sort(entries, new Comparator<Map.Entry<String, String>>() {

    public int compare(Map.Entry<String, String> o1, Map.Entry<String, String> o2) { 
        return o1.getValue().compareTo(o2.getValue());
    }

});

for (Map.Entry<String, String> entry : entries) {
    System.out.println(entry);
}

输出:

baz=a
foo=c
bar=b
-----------sort-----------
baz=a
bar=b
foo=c

试一试 here .

关于java - 在android中对 map 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25480856/

相关文章:

java - 线程创建现象和启动线程之间的区别

java - 如何获取 Drools 中 Activity 规则的数量?

java - jsonobject 第 19 行有未终止的对象?

lucene - 如何在 lucene 中对等分应用默认排序?

java - 使用 Java 将 2 个文件添加到 zip 存档

android - 在 MoDisco 中生成调用图模型

android - 将 SimpleAdapter 与微调器一起使用

android - 开发基于 Windows 的手机的移动应用程序

java - Java中编辑打开的.txt中的文件并替换为新数据的过程

java - Map.Entry.<Integer, Integer>comparingByValue() 中 <Integer,Integer> 的重要性是什么