考虑一种签名包含Integer
数组的方法:
public static void parse(Integer[] categories)
parse
需要调用另一个方法,该方法需要一个字符串数组。所以我需要将Integer[]
转换为String[]
。
例如,[31, 244] ⇒ ["31", "244"]
。
我尝试过Arrays.copyOf描述here:
String[] stringArray = Arrays.copyOf(objectArray, objectArray.length, String[].class);
但得到了ArrayStoreException
。
我可以迭代并转换每个元素,但是有更优雅的方式吗?
答案 0 :(得分:3)
如果你不想避免循环,那么你可以简单地做:
String[] strarr = new String[categories.length];
for (int i=0; i<categories.length; i++)
strarr[i] = categories[i] != null ? categories[i].toString() : null;
编辑:我承认这是一个 hack ,但它可以在不重复原始整数数组的情况下运行:
String[] strarr = Arrays.toString(categories).replaceAll("[\\[\\]]", "").split("\\s*,\\s*");
答案 1 :(得分:1)
您可以通过迭代Int-Array并将每个元素保存到附加了.toString()
的String-Array中来手动完成:
for(i = 0; i < intArray.length(); i++) {
stringArray[i] = intArray[i].toString()
}
(未经测试,但这样的事情应该是你要找的东西)
嗯,嗯,看看你的评论。我不知道这样做更容易或更优雅,抱歉。答案 2 :(得分:1)
我认为没有一种方法:
使用循环,如:
String strings[] = new String[integerarray.length];
for(int i = 0; i<integerarray.length;++i)
{
strings[i] = Integer.toString(integerarray[i]);
}