我有一个相当大的CSV文件(〜.5Mb,16000行,6列),我目前作为Android应用程序的一部分导入到数组中。我将CSV存储在assets文件夹中,并在每次使用时重新导入它。导入需要7或8秒(每行约.47毫秒)。
以下是我在CSV中使用的代码:
@Override
protected ArrayList<Car> doInBackground(Void... voids) {
ArrayList<Car> toReturn = new ArrayList<Car>();
try {
BufferedReader CSVFile = new BufferedReader(new InputStreamReader(CarChooser.this.getAssets().open(CSV_NAME)));
String dataRow = CSVFile.readLine();
Car car;
while (dataRow != null){
// split on the comma only if that comma has zero, or an even number of quotes in ahead of it
String[] dataArray = dataRow.split(",(?=([^\"]*\"[^\"]*\")*[^\"]*$)");
if(dataArray.length != 6) throw new IllegalStateException("Row length should be 6. Row length = " + dataArray.length);
int year = Integer.parseInt(dataArray[0]);
String make = Utils.removeQuotes(dataArray[1]);
String model = Utils.removeQuotes(dataArray[2]);
float mpgCty = Float.parseFloat(dataArray[3]);
float mpgHwy = Float.parseFloat(dataArray[4]);
float mpgCmb = Float.parseFloat(dataArray[5]);
car = new Car(year, make, model, mpgCty, mpgHwy, mpgCmb);
toReturn.add(car);
dataRow = CSVFile.readLine();
}
CSVFile.close();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return toReturn;
}
以下是我的问题:
是时候考虑我应该期待什么了?
如果没有,为什么需要这么长时间?
加快整个过程的最佳方法是什么?
我没有SQL数据库的经验,但这听起来像我应该研究的东西。