gpt4 book ai didi

java - 在Android应用程序中导入csv

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

我在之前回答的问题上找到了这段代码,以便在 Android 应用程序中导入 csv,我必须将一个名为 data.csv 的文件导入到我的 Android 应用程序中,然后我需要对所述数据库、行执行搜索像这样:

178464;AA1...

代码如下:

package com.cdac.qrcodescanner;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;

public class CSVFile {
InputStream inputStream;

public CSVFile(InputStream inputStream){
this.inputStream = inputStream;
}

public List read(){
List resultList = new ArrayList();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
try {
String csvLine;
while ((csvLine = reader.readLine()) != null) {
String[] row = csvLine.split(";");
resultList.add(row);
}
}
catch (IOException ex) {
throw new RuntimeException("Error in reading CSV file: "+ex);
}
finally {
try {
inputStream.close();
}
catch (IOException e) {
throw new RuntimeException("Error while closing input stream: "+e);
}
}
return resultList;
}
}

这是我想要使用我的数据的地方:

InputStream inputStream = getResources().openRawResource(R.raw.data);
CSVFile csvFile = new CSVFile(inputStream);
List scoreList = csvFile.read();

我现在想使用 get 方法在分号(值)后面包含字符串,所以我尝试了:

String i = scoreList.get(178464);

这提示我错误:

incompatible types:

Required: Java.lang.string
Found: Java.lang.Object

这样做修复了错误,但使我的应用程序崩溃:

String i = (string)scoreList.get(178464);
Object i = scoreList.get(178464);

我对 Java 不是特别专家,但我感觉我正在做一些非常错误的事情,而且我一生都无法弄清楚是什么,任何帮助将不胜感激!

最佳答案

在 CSVFile.read() 方法中,我们有以下内容:

String[] row = csvLine.split(";");
resultList.add(row);

结果列表将是字符串数组的列表。列表中的每个元素都是文件的一行。数组的每个元素都是一个值(列)。

所以...

String i = (string)scoreList.get(178464);

返回文件的第 178464 行。我假设它会崩溃,因为你的文件中没有 178464 行,即使有,返回的值也应该是 String[]。

我假设您希望通过每个元素的 id(示例中为 178464)对每个元素进行索引,并使用此 id 访问它。您应该使用 map 。

Map resultMap = new HashMap();
while ((csvLine = reader.readLine()) != null) {
String[] row = csvLine.split(";");
String id = row[0];
Integer score = Integer.parseInt(row[1]);
resultMap.put(id, score);
}

然后您可以使用 ids 访问 map :

Integer score = resultMap.get("178464");

关于java - 在Android应用程序中导入csv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59147083/

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