需要帮助从List <string []>转换为Array

时间:2016-01-07 17:13:21

标签: java string list arraylist casting

我正在使用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字符串数组中的项目进行迭代?

谢谢

4 个答案:

答案 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]);