ArrayList到Hashset到SharedPref

时间:2014-02-26 12:28:59

标签: java android hash arraylist sharedpreferences

嗨,我很难搞清楚如何做到这一点: 我有一个ArrayList,其类型是Person,包括一些字段(firstName,lastName两个字符串,生日日历)现在我需要将它转换为HashSet并保存(然后检索它)到共享首选项但我不了解如何。 这就是我所做的:

ArrayList <Person> arrayPerson = new ArrayList<Person>();
Set <String> mySet = new HashSet<String>();
SharedPreferences sharedpref;
final static String SHARED_PREF_FILE = "listOfPersons";
sharedpref = getSharedPreferences(SHARED_PREF_FILE, Context.MODE_PRIVATE);


onCreate() {
    SaveData();
    // This is supposed to be shown on a TextView
    getData(myStringSet);
}

void SaveData() {
    Editor editor = sharedpref.edit();
    editor.putStringSet("myStringSet", mySet);
    editor.commit();

}

Set<String> getData(String key) {
    return sharedpref.getStringSet(key, mySet);
}

1 个答案:

答案 0 :(得分:0)

在您的代码中,我看到您使用String作为集合的类型。在这种情况下,我认为您可以想出某种将Person对象转换为String的方法,并在将元素添加到集合时,确保调用该方法将Person解析为String。您必须确保将Person解析为String的方法不会为2个不同的Persons生成相同的字符串。当然,您应该创建一个采用String并从中创建Person对象的方法。此解释假定Set中的每个String都是Person。使用循环将所有人添加到集合中。

for (Person p : arrayPerson) {
   mySet.add(p.convertToString());
}

如果从配置文件中读取字符串并希望从集合中创建人员的ArrayList,则可以使用以下代码,其中Person.parseString()是一个静态方法,用于解析String并创建Person对象基于它。

    arrayPerson = new ArrayList<Person>(mySet.size());
    for (String person : mySet) {
        arrayPerson.add(Person.parseString(person));
    }