我正在尝试将Array列表转换为String数组但获得异常。有人可以帮助我。
ArrayList的大小:1
字符串数组的大小:2
我使用以下代码:
String[] StringArray ={};
StringArray = ArrayList.toArray(new String[ArrayList.size()]);
所以,StringArray
的长度现在是1.但它应该是2. 我的问题是如果String Array size大于ArrayList,我如何将arraylist转换为StringArray。
我该怎么做?请各位帮助我。
答案 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