我有以下方法,我从 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/