永久保存个性化类型的ArrayList的最佳方法

时间:2012-12-03 18:40:32

标签: android arraylist sharedpreferences

我有一个人员(ArrayList<Person>)的ArrayList,我想将该ArrayList存储在持久数据类型中。 SharedPreferences是一个解决方案,但它只是操纵String,int,float` ...变量。你有什么想法吗? 非常感谢你。

3 个答案:

答案 0 :(得分:2)

我将数组中的每个Person存储为SQLite数据库中的一行。如果要将其读回程序,每行都将成为数组中的Person对象。

答案 1 :(得分:2)

更简单的是使用java Serialisation

你只需要一个人类:

public class Persons {

  ArrayList<Person> personList;
}

然后只需使用

// init Persons
Persons person = new Persons();
// add some
persons.personList.add(new Person());

// write out
ObjectOutpuStream oos = new ObjectOutputStream(new BufferOutputStream(new FileOutputStream("personsDB.ser")));

oos.writeObject(persons);
oos.close();

回读

ObjectInputStream ois = new ObjectInputStream(new BufferedInpuStream(new FileInpuStream("personsDB.ser")));
persons = (Persons) ois.readObject();
ois.close();
// ready! Java does that all for you; since Persons is one object which contains something

缺点是在写入过程中电池电量耗尽。有些人首先写入临时文件,删除旧文件并重命名为正确的文件名。

高性能(更少的空间,更快) 您可以使用DataOutputStream,但是您必须自己编写所有字段(但这也很简单)

答案 2 :(得分:1)

您必须使用数据库或将json响应写入文件并从文件中读取