嗨,我很难搞清楚如何做到这一点: 我有一个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);
}
答案 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));
}