将多维数组更改为单个数组

时间:2011-07-30 07:34:57

标签: java arrays

我想在我的数组中使用split()方法。但是,我不能使用单个数组。这是我的代码:

output_list = [1 2 3 4,5 6 7 8,9 8 7 6]

Arraylist<String> output_list = new ArrayList<String>();
    String[][] test = new String[output_list.size()][];
    for(int i=0; i<output_list.size();i++)
    {
       String temp = output_list.get(i);
       test[i] = temp.split(" ");
    }

我想只使用单个数组test []。在使用.split()分割数据后,output_list中的项将插入test []。但问题是当我将String test [] []更改为test []时; 我得到了不兼容的类型错误。任何人都可以告诉我它为什么会发生?我使用java

2 个答案:

答案 0 :(得分:1)

我建议使用临时列表并在最后转换为数组。

    List<String> output_list = new ArrayList<String>();

    //add test values
    output_list.add("1 2 3 4");
    output_list.add("5 6 7 8");
    output_list.add("9 8 7 6");

    //temporary list used until converted to an array at the end
    List<String> temp = new ArrayList<String>();

    //iterate over each string in the output_list
    for(String group : output_list){

        //1. split each group into individual strings
        //2. Convert the array returned from split into a list
        //3. Add that list to the temp list
        temp.addAll(Arrays.asList(group.split(" ")));
    }

    //convert the temp list into a string array
    String[] test = temp.toArray(new String[temp.size()]);

答案 1 :(得分:0)

如果output_list中的数据结构定义良好,则可以采用替代方法。如果列表中的每个字符串只有4个元素,那么您可以使用System.arrayCopy例程将拆分字符串移动到测试数组中。

    List<String> output_list = new ArrayList<String>();

    //add test values
    output_list.add("1 2 3 4");
    output_list.add("5 6 7 8");
    output_list.add("9 8 7 6");

    //This assumes that each string will always have 4 elements
    String[] test = new String[4 * output_list.size()];

    //iterate over each string in the output_list
    for(int i = 0; i < output_list.size(); i++){

        String group = output_list.get(i);

        //1. split each group into individual strings
        //2. Copy the values into the test array
        System.arraycopy(group.split(" "), 0, test, i * 4, 4);
    }