set.addAll が注文を切り替えてリストを追加する理由がわかりません。(まだ私のセットは LinkedHashSet として宣言されています)
このコードは、SharedPreferences から Set-List を取得し、それを ArrayList に変換し、1 つの項目をリストに追加してから、リスト全体を 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);
最初の 2 つの文字列は (私がデバッグしたように) 正しく追加されますが、3 番目の文字列は 2 番目の文字列と位置が切り替わります。
出力:
getSharedPrefSet 関数:
Set getSharedPrefSet (String key) {
sharedPrefs = this.getSharedPreferences("myPreferences", Context.MODE_PRIVATE);
return sharedPrefs.getStringSet(key, null);
}
回避策
解決策の 1 つは、android で配列の共有設定を作成するコードを作成する方法で見つけることができますか?