转换列表<list <string>&gt; to String [] </list <string>

时间:2012-02-16 06:42:53

标签: java list arrays

我有一个要求,其中我应该编写String[]类型的方法并返回相同的内容。但是我拥有的实现,使用并返回List<List<String>>List<List<String>>得到了返回数据库中的值,并且在将它们直接添加到String[]之前,这些值是未知的。列表也可以是一个巨大的大小,以便在String[]中容纳它。如何完成转换。

2 个答案:

答案 0 :(得分:3)

这应该可以正常工作。虽然如果你可以返回更好的嵌入式列表结构:

final List<String> resultList = new ArrayList<String>(64000);
final List<List<String>> mainList = yourFuncWhichReturnsEmbeddedLists();
for(final List<String> subList: mainList) {
    resultList.addAll(subList);
}

final String[] resultArr = subList.toArray(new String[0]);

答案 1 :(得分:-2)

看看这段代码:

public static String[] myMethod(ArrayList<ArrayList<String>> list) 
{
    int dim1 = list.size(); 
    int total=0;
    for(int i=0; i< dim1; i++)
        total += list.get(i).size();

    String[] result = new String[total];        

    int index = 0;
    for(int i=0; i<dim1; i++)
    {
        int dim2 = list.get(i).size();
        for(int j=0; j<dim2; j++)
        {
            result[index] = list.get(i).get(j);
            index++;
        }
    }

    return result;
}

运行此测试代码:

public static void main(String[] args)
    {
        ArrayList<String> list1 = new ArrayList<String>();
        ArrayList<String> list2 = new ArrayList<String>();
        ArrayList<String> list3 = new ArrayList<String>();

        list1.add("first of first");
        list1.add("second of first");
        list1.add("third of first");

        list2.add("first of second");

        list3.add("first of third");
        list3.add("second of third");

        ArrayList<ArrayList<String>> superList = new ArrayList<ArrayList<String>>();
        superList.add(list1);
        superList.add(list2);
        superList.add(list3);

        String[] output = myMethod(superList);

        for(int i=0; i<output.length; i++)
            System.out.println(output[i]);                  
    }