ArrayList到String数组

时间:2011-12-27 21:12:59

标签: java arraylist

给定3个变量(homeNumber,mobileNumber和workNumber),它们可以为null,但至少其中一个是String,我需要返回一个String数组,以便稍后在Android对话框中使用它。我这样做有麻烦。我尝试在ArrayList中执行它并删除所有null元素,这样就只有我想要的只有字符串的ArrayList,但是当我尝试将它更改为数组时,我在最后一行得到一个ClassCast异常。

ArrayList numberList = new ArrayList();
numberList.add(homeNumber);
numberList.add(mobileNumber);
numberList.add(workNumber);
numberList.removeAll(Collections.singleton(null)); 

final String[] items= (String[]) numberList.toArray();

任何想法如何解决这个问题?

5 个答案:

答案 0 :(得分:8)

String[] items = new String[numberList.size()];
numberList.toArray(items);

答案 1 :(得分:1)

你可以做以下两件事之一:

传入你想要的数组类型(不需要实例化一个全长数组,无论性能如何):

final String[] items= (String[]) numberList.toArray(new String[0]);

然而,更好的解决方案是使用泛型:

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

final String[] items= (String[]) numberList.toArray();

答案 2 :(得分:0)

ArrayList.toArray()的返回类型是Object [],除非您将数组作为第一个参数传递。在这种情况下,返回类型与传递的数组具有相同的类型,如果数组足够大,则使用它。这样做:

final String[] items= (String[])numberList.toArray(new String[3])

答案 3 :(得分:0)

更改

ArrayList numberList = new ArrayList();

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

答案 4 :(得分:0)

使用List类的另一种方法toArray()

numberList.toArray(new String[numberList.size()]);