ArrayList в строковый массив - PullRequest
       5

ArrayList в строковый массив

0 голосов
/ 28 декабря 2011

Учитывая 3 переменные (homeNumber, mobileNumber и workNumber), которые могут быть нулевыми, но по крайней мере одна из них будет String, мне нужно вернуть массив String, чтобы я мог использовать его позже в диалоге Android.У меня проблемы с этим.Я попытался сделать это в ArrayList и удалить все нулевые элементы, что оставляет ArrayList только с Strings, как я хочу, но при попытке изменить его на Array я получаю исключение 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 ]

8 голосов
/ 28 декабря 2011
String[] items = new String[numberList.size()];
numberList.toArray(items);
1 голос
/ 28 декабря 2011

Вы можете сделать одну из двух вещей:

Передайте тип массива, который вы хотите получить (нет необходимости создавать экземпляр массива полной длины, производительность одинакова независимо):

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

Однако лучшее решение - использовать дженерики:

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

final String[] items= (String[]) numberList.toArray();
0 голосов
/ 28 декабря 2011

Используйте другой метод toArray () класса List:

numberList.toArray(new String[numberList.size()]);
0 голосов
/ 28 декабря 2011

Изменить

ArrayList numberList = new ArrayList();

на

List<String> numberList = new ArrayList<String>();
0 голосов
/ 28 декабря 2011

Тип возвращаемого значения ArrayList.toArray () - Object [], если только вы не передаете массив в качестве первого аргумента. В этом случае возвращаемый тип имеет тот же тип, что и переданный массив, и, если массив достаточно большой, он используется. Сделайте это:

final String[] items= (String[])numberList.toArray(new String[3])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...