如何不对HashSet值进行排序并允许重复?

时间:2015-06-21 09:01:11

标签: java android arraylist sharedpreferences hashset

我正在开发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();


    }

1 个答案:

答案 0 :(得分:1)

根据定义,Set不能具有重复值,因此您无法执行所需的操作。

此外,HashSet不会保留订单,如果您需要有序集,则可以使用LinkedHashSet来保留订单。