Java: скопировать массив целых чисел в массив строк - PullRequest
1 голос
/ 27 февраля 2012

Рассмотрим метод, подпись которого содержит Integer Array:

public static void parse(Integer[] categories)

parse необходимо вызвать другой метод, который ожидает массив строк. Поэтому мне нужно конвертировать Integer[] в String[].

Например, [31, 244] ⇒ ["31", "244"].

Я пробовал Arrays.copy, из описанного здесь :

String[] stringArray = Arrays.copyOf(objectArray, objectArray.length, String[].class);

Но получил ArrayStoreException.

Я могу перебирать и преобразовывать каждый элемент, но есть ли более элегантный способ?

Ответы [ 3 ]

3 голосов
/ 27 февраля 2012

Если вы не пытаетесь избежать цикла, тогда вы можете просто сделать:

String[] strarr = new String[categories.length];
for (int i=0; i<categories.length; i++)
     strarr[i] = categories[i] != null ? categories[i].toString() : null;

РЕДАКТИРОВАТЬ: Я признаю, что это хак , но этоработает без итерации исходного массива Integer:

String[] strarr = Arrays.toString(categories).replaceAll("[\\[\\]]", "").split("\\s*,\\s*");
1 голос
/ 27 февраля 2012

Я не думаю, что есть способ для этого:

используйте для этого цикл вроде:

String strings[] = new String[integerarray.length];

for(int i = 0; i<integerarray.length;++i)
{
     strings[i] = Integer.toString(integerarray[i]);
}
1 голос
/ 27 февраля 2012

Вы можете сделать это вручную, перебирая Int-Array и сохраняя каждый элемент в String-Array с прикрепленным .toString():

for(i = 0; i < intArray.length(); i++) {
    stringArray[i] = intArray[i].toString()
}

(не проверено, но что-то вроде этого должно бытьчто вы ищете)

Хммм, просто прочитайте ваш комментарий.Извините, я не знаю более простого или изящного способа сделать это.

...