我正在使用univocity的csvparser库,并且无法将List对象转换为可以轻松读取的数组。
不断抛出ArrayStoreException的方法是:
List<String[]> resolvedData;
String[] array = new String[7000];
public void parseURLs() throws FileNotFoundException {
CsvParserSettings settings = new CsvParserSettings();
settings.getFormat().setLineSeparator("\n");
CsvParser parser = new CsvParser(settings);
try {
resolvedData = parser.parseAll(new FileReader("C:\\Users\\kevin.anderson\\Desktop\\book1.csv"));
resolvedData.toArray(array);
} catch (Exception ex) {
System.out.println(ex.toString());
}
}
有没有办法将List中的项目放入数组中?还是有一种简单的方法可以通过List字符串数组中的项目进行迭代?
谢谢
答案 0 :(得分:1)
我认为这是XY problem。没有必要将数据转换为数组以便迭代它,所以我会给出你正在寻找的认为的答案,这就是如何轻松地迭代 / em>超过您从CSV解析器收到的List<String[]>
。
for (String[] currentLine : resolvedData)
{
// currentLine here is a String[] containing the fields from one CSV record
// To iterate over the fields
for (String field : currentLine)
{
// do something with each field
}
// --- OR ---
// To access fields by index
String firstField = currentLine[0];
// do something with firstField
}
答案 1 :(得分:0)
您得到此Intent browserIntent = new Intent(Intent.ACTION_VIEW,
Uri.parse(v.getTag().toString()));
因为列表ArrayStoreException
包含resolvedData
个元素,而不是String[]
。
有关详细信息,请参阅https://docs.oracle.com/javase/7/docs/api/java/lang/ArrayStoreException.html。
答案 2 :(得分:0)
试试这个。
List<String[]> resolvedData;
String[][] array;
public void parseURLs() throws FileNotFoundException {
CsvParserSettings settings = new CsvParserSettings();
settings.getFormat().setLineSeparator("\n");
CsvParser parser = new CsvParser(settings);
try {
resolvedData = parser.parseAll(new FileReader("C:\\Users\\kevin.anderson\\Desktop\\book1.csv"));
array = new String[resolvedData.size()][];
resolvedData.toArray(array);
} catch (Exception ex) {
System.out.println(ex.toString());
}
}
基本错误,您假设7000的传入列表的固定大小,以及使用
解决的单维数组String [] [] array = new String [resolvedData.size()] [];
答案 3 :(得分:0)
@Daruisz是对的。 resolvedData.toArray()
将生成一个数组数组:
String[] array1 = {"1a", "1b"};
String[] array2 = {"2a", "2b"};
String[] array3 = {"3a", "3b", "3c"};
List<String[]> data = Arrays.asList(array1, array2, array3);
String[][] arrayOfArrays = data.toArray(new String[0][0]);