我正在开发Android项目,我想将arrayList
值保存到sharedpreferences
我不想从列表中排序或删除重复的值
我希望arrayList
中的确切数据保存在HashSet
例如这是我的arrayList输出:
D/waitingList﹕ [a, b, c, a, a, aa, cc]
但是当我将它保存在HashSet中时,它会排序
D/setWaiting﹕ [aa, a, b, cc, c]
和sharedpreferences xml这样的文件
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<int name="count_games" value="0" />
<set name="setCurrent" />
<set name="setWaiting">
<string>a</string>
<string>aa</string>
<string>b</string>
<string>c</string>
<string>cc</string>
</set>
</map>
我必须按照arrayList
中的所有内容进行排序这是我的代码:
public void saveArrayList(Context mContext, ArrayList<String> currentList, ArrayList<String> waitingList, int count)
{
SharedPreferences pref = PreferenceManager.getDefaultSharedPreferences(mContext);
SharedPreferences.Editor edit = pref.edit();
HashSet<String> setCurrent = new HashSet<String>();
setCurrent.addAll(currentList);
Log.d("setCurrent",setCurrent.toString());
Log.d("currentList",currentList.toString());
HashSet<String> setWaiting = new HashSet<String>();
setWaiting.addAll(waitingList);
Log.d("setWaiting",setWaiting.toString());
Log.d("waitingList",waitingList.toString());
edit.putStringSet("setWaiting", setWaiting);
edit.putStringSet("setCurrent", setCurrent);
edit.putInt("count_games", count);
edit.commit();
}
答案 0 :(得分:1)
根据定义,Set不能具有重复值,因此您无法执行所需的操作。
此外,HashSet不会保留订单,如果您需要有序集,则可以使用LinkedHashSet来保留订单。