Android:对从SharedReferences检索到的数据进行排序
我正在尝试在Android中存储数据。我正在使用Android:对从SharedReferences检索到的数据进行排序,android,sorting,sharedpreferences,Android,Sorting,Sharedpreferences,我正在尝试在Android中存储数据。我正在使用SharedReferences。我使用以下方法检索这些数据: SharedPreferences myPrefs = this.getSharedPreferences("myPrefs", MODE_WORLD_READABLE); Map<String, ?> keys = myPrefs.getAll(); for (Map.Entry<String, ?> entr
SharedReferences
。我使用以下方法检索这些数据:
SharedPreferences myPrefs = this.getSharedPreferences("myPrefs", MODE_WORLD_READABLE);
Map<String, ?> keys = myPrefs.getAll();
for (Map.Entry<String, ?> entry : keys.entrySet()) {
Log.i("map values", entry.getKey());
//some code
}
SharedReferences myPrefs=this.getSharedReferences(“myPrefs”,模式世界可读);
Map keys=myPrefs.getAll();
for(Map.Entry:keys.entrySet()){
Log.i(“映射值”,entry.getKey());
//一些代码
}
编辑:
但检索到的数据与插入的顺序不同。如何获得相同的订单?将生成的
Map
复制到SortedMap
的实现中,例如TreeMap
如下所示(按键排序):
将生成的
Map
复制到SortedMap
的实现中,例如TreeMap
如下所示(按键排序):
按顺序添加属性,如下所示。。。 首先保存设置
public static void saveSettings(final Editor editor, final String [] order) {
final String csl = toString(order);//comma separated
editor.putString("insert_order", csl);
for (int i = 0; i < values.length; i++) {
editor.putString(values[i], your_value[i]);
}
}
publicstaticvoidsavesettings(最终编辑器,最终字符串[]顺序){
最后一个字符串csl=toString(order);//逗号分隔
编辑器.putString(“插入顺序”,csl);
对于(int i=0;i
现在加载它们:
public static List<String> loadSetting(final SharedPreferences preferences) {
final List<String> inOrder = new ArrayList<>();
final String[] ordering = preferences.getString("insert_order", "").split(",");
for (final String item : ordering) {
final String value = (String) preferences.getString(item, "");
inOrder.add(value);
}
return inOrder;
}
公共静态列表加载设置(最终SharedReferences首选项){
最终列表顺序=新的ArrayList();
final String[]ordering=preferences.getString(“插入顺序”).split(“,”);
用于(最终字符串项:订购){
最终字符串值=(字符串)首选项.getString(项“”);
按顺序添加(值);
}
按顺序返回;
}
按顺序添加属性,如下所示。。。
首先保存设置
public static void saveSettings(final Editor editor, final String [] order) {
final String csl = toString(order);//comma separated
editor.putString("insert_order", csl);
for (int i = 0; i < values.length; i++) {
editor.putString(values[i], your_value[i]);
}
}
publicstaticvoidsavesettings(最终编辑器,最终字符串[]顺序){
最后一个字符串csl=toString(order);//逗号分隔
编辑器.putString(“插入顺序”,csl);
对于(int i=0;i
现在加载它们:
public static List<String> loadSetting(final SharedPreferences preferences) {
final List<String> inOrder = new ArrayList<>();
final String[] ordering = preferences.getString("insert_order", "").split(",");
for (final String item : ordering) {
final String value = (String) preferences.getString(item, "");
inOrder.add(value);
}
return inOrder;
}
公共静态列表加载设置(最终SharedReferences首选项){
最终列表顺序=新的ArrayList();
final String[]ordering=preferences.getString(“插入顺序”).split(“,”);
用于(最终字符串项:订购){
最终字符串值=(字符串)首选项.getString(项“”);
按顺序添加(值);
}
按顺序返回;
}
您可以通过创建自己的比较器对地图进行排序。检查啊。您想要与插入的顺序相同的顺序吗?这样做并不容易——从文件中加载键和值时,这些信息会丢失。谢谢。这意味着我应该找到我自己的方法来做……你们可以通过创建你们自己的比较器来对地图进行排序。检查啊。您想要与插入的顺序相同的顺序吗?这样做并不容易——从文件中加载键和值时,这些信息会丢失。谢谢。这意味着我应该找到我自己的方法来做到这一点……我怎样才能按值对数据进行排序?我怎样才能按值对数据进行排序?