1

我正在尝试将数组列表转换为字符串数组,但出现异常。有人能帮帮我吗。

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

我正在使用以下代码:

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

所以,StringArray现在的长度是 1。但它应该是 2。我的问题是如果字符串数组大小大于 ArrayList,我如何将 arraylist 转换为 StringArray。

我怎样才能做到这一点?请大家帮帮我。

4

4 回答 4

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,大小为 2,StringArray也会在数组末尾添加空值。

于 2013-05-22T12:09:00.130 回答
0
 String[] arr = new String[list.size()];
 arr = list.toArray(arr);
于 2013-05-22T12:05:24.457 回答
0

尝试像本教程中那样做:http: //viralpatel.net/blogs/convert-arraylist-to-arrays-in-java/

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

于 2013-05-22T12:06:59.353 回答
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

于 2015-06-23T11:35:18.400 回答