我不是源代码的实现者,但如果您考虑一下,SharedPreferences 所在的 KV 存储库非常简单。所以你有 putString() 并且你有 put StringSet()。使用 StringSet 变体来保存多个字符串对实际的存储解决方案没有任何限制。即,如果它不是一个 XML 文件,而是一个 sqlite 数据库,那么您可以使用该键和该类型查询表中的所有值。无论 sql 引擎以何种方式命令它们,都将按原样进行。但是,如果您必须保持顺序,则必须引入将强加于所有其他数据类型的新结构,例如顺序列。即使在 XML 中,这也需要更多的存储空间和更多的复杂性来表示一个是有序的,一个是非有序的。
在我看来,只要 SharedPreferences 支持 putString 和 putStringSet 就可以实现有序和非有序存储。
IE
String orderedString = TextUtils.join(mySafeDeliminator, myListOfStrings);
preferences.edit().putString("key", orderedString).apply();
....
String orderedReturnedString = preferences.getString("key");
List<String> listOfStrings = Arrays.asList(TextUtils.split(orderedReturnedString, mySafeDeliminator));