gpt4 book ai didi

java - 在 Android 上从/res/raw/检索表格数据并将其存储到 2D 数组中的最快方法

转载 作者:行者123 更新时间:2023-12-01 12:03:17 25 4
gpt4 key购买 nike

我正在开发我的第一个 Android 应用程序,因此请随时指出我是否做错了事情或建议另一种做事方式。

我有一个大文件“表”。现在,我可以像这样将数据存储为 csv

a, "stuff with , commas"
b, "foo bar"
c, "test,"

或者像这样的xml

<row>
<number>a</number>
<equipment>"stuff with , commas"</equipment>
</row>
<row>
<number>b</number>
<equipment>"foo bar"</equipment>
</row>
<row>
<number>c</number>
<equipment>"test"</equipment>
</row>

我会使用能够更快检索和存储的内容。但是,我不想对数据进行硬编码。

我需要从 /res/raw/table.csv/res/raw/table.xml 读取数据并将其存储到列表列表中,列表数组或数组数组,我将再次使用最快的一个。

我尝试了几件事:

    InputStream equipmentCSV =  getResources().openRawResource(R.raw.equipment);
String equipmentString = readTextFile(equipmentCSV);

ArrayList<ArrayList<String>> equipmentTable = new ArrayList<ArrayList<String>>();

Scanner scanner = new Scanner(equipmentString);

while (scanner.hasNextLine()) {
String line = scanner.nextLine();
String [] splitLines = line.split(",(?=([^\"]*\"[^\"]*\")*[^\"]*$)");
ArrayList <String> splitLinesList = new ArrayList<String>(Arrays.asList(splitLines));
equipmentTable.add(splitLinesList);
}

readTextFile 在哪里

  public String readTextFile(InputStream inputStream) {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();

byte buf[] = new byte[1024];
int len;
try {
while ((len = inputStream.read(buf)) != -1) {
outputStream.write(buf, 0, len);
}
outputStream.close();
inputStream.close();
} catch (IOException e) {

}
return outputStream.toString();
}

这花了太长时间,所以认为扫描仪可能太慢,并且列表可能比我尝试过的数组花费更长的时间:

    String[] lines = equipmentString.split(System.getProperty("line.separator"));
String [][] equipmentTable = new String[lines.length][2];

for(int i = 0; i < lines.length ; i++){
String [] splitLines = lines[i].split(",(?=([^\"]*\"[^\"]*\")*[^\"]*$)");
equipmentTable[i][0] = splitLines[0];
equipmentTable[i][1] = splitLines[1];
}

这也花了太长时间。

有什么更好的方法来做到这一点?

提前致谢。

最佳答案

尝试引用以下链接。他们应该会帮助你。

https://code.google.com/p/secrets-for-android/source/browse/trunk/src/au/com/bytecode/opencsv/

http://opencsv.sourceforge.net/

这些库将负责 CSV 的读写。

对于 XML,请参阅以下链接。

http://simple.sourceforge.net/

它也有非常好的文档。

关于java - 在 Android 上从/res/raw/检索表格数据并将其存储到 2D 数组中的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27852092/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com