[英]Need help casting from a List<String[]> to an Array
我從單一性使用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());
}
}
有沒有一種方法可以將列表中的項目移到數組中,還是有一種簡單的方法可以遍歷列表字符串數組中的項目?
謝謝
我認為這是一個XY問題 。 無需將數據轉換為數組即可對其進行迭代,因此我將給出我認為您正在尋找的答案,這就是如何輕松地對您要訪問的List<String[]>
進行迭代從CSV解析器重新接收。
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
}
您得到此ArrayStoreException
因為列表resolvedData
包含String[]
元素而不是String
。
有關詳細信息,請參見https://docs.oracle.com/javase/7/docs/api/java/lang/ArrayStoreException.html 。
嘗試這個。
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()] [];
@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]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.