Android内存中的值对与SQLite

Android内存中的值对与SQLite,android,Android,如果在应用程序的动态行为期间需要大量值对,那么存储它们的最佳方法是什么?内存中(如LinkedHashMap)或SQLite DB? 我有4000多行personID和personName,我需要一个EditText和一个微调器。如果我在EditText中输入正确的personID,微调器应该跳转到正确的personName,但微调器也应该包含所有personName 目前,我已经按照以下方式实现了“内存中”解决方案,因为一个简单的数组不能大于64k。代码当然是生成的。我还尝试用XML定义数组,

如果在应用程序的动态行为期间需要大量值对,那么存储它们的最佳方法是什么?内存中(如LinkedHashMap)或SQLite DB? 我有4000多行personID和personName,我需要一个EditText和一个微调器。如果我在EditText中输入正确的personID,微调器应该跳转到正确的personName,但微调器也应该包含所有personName

目前,我已经按照以下方式实现了“内存中”解决方案,因为一个简单的数组不能大于64k。代码当然是生成的。我还尝试用XML定义数组,但它也有相同的限制

public enum CompPeople {
    INSTANCE;

    public LinkedHashMap<Short, String> peopleIDs = new LinkedHashMap<Short, String>();

    public void initialize() {
        peopleIDs = new LinkedHashMap<Short, String>();
        setPeople1();
        setPeople2();
        setPeople3();
        setPeople4();
    }

    public void setPeople1() {
        peopleIDs.put(new Short((short) 1011), "John Doe");
        peopleIDs.put(new Short((short) 1012), "Jack Knight");
        peopleIDs.put(new Short((short) 1013), "Sue Doe");
        ...
    }

    public void setPeople2() {
        ...
    }

    public void setPeople3() {
        ...
    }

    public void setPeople4() {
        ...
    }
}
public enum CompPeople{
实例;
public LinkedHashMap peopleId=新LinkedHashMap();
公共无效初始化(){
peopleId=新LinkedHashMap();
setPeople1();
setPeople2();
setPeople3();
setPeople4();
}
public void setPeople1(){
peopleIDs.put(新短((短)1011),“John Doe”);
peopleIDs.put(新短((短)1012),“杰克·奈特”);
peopleIDs.put(新短((短)1013),“Sue Doe”);
...
}
public void setPeople2(){
...
}
public void setPeople3(){
...
}
public void setPeople4(){
...
}
}
如果SQLite方法更好,那么在应用程序第一次运行时初始化数据库是否有比这里描述的更好的解决方案


提前谢谢

需要考虑的几点:

  • 在决定数据库和内存结构时,首先要考虑的是持久性需求。如果需要在应用程序退出后保留数据,则必须使用某种持久性存储,即数据库或平面文件

  • 无论怎样做,在数据库中持久化对象都会变得更慢,而且可能会更麻烦。如果您可以将对象舒适地放入内存中,那么使用数据库将不需要额外的复杂性

  • 4000行通常不是那么大,尽管它可能是在嵌入式设备的上下文中,如果行大小足够大,例如存储blob。您希望每行占用多少空间?因为如果我们谈论的是3-4MB,那么您可能最好只使用内存结构