java - 将String ArrayList转换为具有更大大小的String Array

时间:2013-05-22 11:58:39

标签: java arraylist arrays

我正在尝试将Array列表转换为String数组但获得异常。有人可以帮助我。

ArrayList的大小:1
字符串数组的大小:2

我使用以下代码:

String[] StringArray ={};
StringArray = ArrayList.toArray(new String[ArrayList.size()]);

所以,StringArray的长度现在是1.但它应该是2. 我的问题是如果String Array size大于ArrayList,我如何将arraylist转换为StringArray。

我该怎么做?请各位帮助我。

4 个答案:

答案 0 :(得分:4)

如果您想将ArrayList转换为更大的String数组,请使用toArray()并将要填充的数组作为参数传递。如果数组大小超过需要,则其余元素将为null。如果数组较小 - 将返回一个大小为list.size的新数组。

全部来自javadoc

ArrayList<String> list  = new ArrayList<>();
list.add("abc");

String[] StringArray = new String[2];
StringArray = list.toArray(StringArray);

在这种情况下,即使列表大小为1,StringArray的大小为2,也会在数组末尾添加空值。

答案 1 :(得分:0)

 String[] arr = new String[list.size()];
 arr = list.toArray(arr);

答案 2 :(得分:0)

尝试按照本教程中的说明进行操作:http://viralpatel.net/blogs/convert-arraylist-to-arrays-in-java/

.toArray方法之前定义的数组大小对结果没有影响。调用.toArray后,旧数组被JVM销毁。

答案 3 :(得分:0)

如果我们将一个数组作为参数传递给方法toArray,那么它用list的项填充它,否则返回一个Object的数组。我们可以传递一个大于列表大小的数组作为参数来获得更大的数组。以下示例解释了它:

     public static void main(String[] args) throws FileNotFoundException {
        List<String> list  = new ArrayList<>();
        list.add("One");
        System.out.println("list Size: " + list.size());

        //If we pass an array as argument it will be filled with items from list and then returned. Here array size is (list.size +2 )
        String[] stringArray = list.toArray(new String[2]);
        System.out.println("stringArray Size: " + stringArray.length);

        //If we do not pass an array as argument we get Object[] of same size
        Object[] objects = list.toArray();
        System.out.println("objects Size: " + objects.length);

        // Java 8 has option of streams to get same size array
        String[] stringArrayUsingStream = list.stream().toArray(String[]::new);
        System.out.println("stringArrayUsingStream Size: " + stringArrayUsingStream.length);
    }

如上所示,我们还可以选择在Java 8中使用流。输出为:

list Size: 1 stringArray Size: 2 objects Size: 1 stringArrayUsingStream Size: 1