无法弄清楚为什么 set.addAll 会在订单切换的情况下添加我的列表。(我的集合仍然被声明为 LinkedHashSet)
该代码是关于从 SharedPreferences 获取 Set-List,将其转换为 ArrayList,将一项添加到列表,然后将整个列表添加到 Set。
代码看起来像这样:
Set<String> set = new LinkedHashSet<String>();
List<String> stringList = new ArrayList<String>();
///
set = getSharedPrefSet("mySet");
stringList = new ArrayList<String>(set);
stringList.add(message);
set.addAll(stringList); //this messes up my order
saveSharedPrefSet("mySet", set);
前两个字符串正确添加(正如我调试的那样),但第三个字符串与第二个字符串切换位置。
输出:
getSharedPrefSet 函数:
Set getSharedPrefSet (String key) {
sharedPrefs = this.getSharedPreferences("myPreferences", Context.MODE_PRIVATE);
return sharedPrefs.getStringSet(key, null);
}
解决方法
一种解决方案可以在How can write code to make sharedpreferences for array in android?