2012-02-27 52 views
1

的阵列考虑其签名包含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

我可以迭代和转换每个元素,但有没有更优雅的方式?

+2

for循环的任何问题? – 2012-02-27 12:00:46

+0

这不是问题,但我认为会有更优雅的东西,也许让人想起Python的列表理解。 – 2012-02-27 12:02:12

+0

无论哪种方式的底线是,java必须分别转换每个元素,所以任何你可以找到的方式可能只是看起来更好,但执行循环 – Hachi 2012-02-27 12:07:08

回答

3

如果你不试图避免循环,那么你可以简单地做:

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

编辑:我承认这是一个破解但它的作品不反复用原来的整数数组:

String[] strarr = Arrays.toString(categories).replaceAll("[\\[\\]]", "").split("\\s*,\\s*"); 
+0

+ 1为避免NullPointerException – 2012-02-27 12:05:40

+1

-1问题是:我可以迭代并转换每个元素,但有没有更优雅的方式?“ – 2012-02-27 12:10:40

+0

我给了它+1,没有接受它。如果没有任何一行,这可能是正确的答案。 – 2012-02-27 12:13:57

1

您可以手动通过循环诠释阵,每个元素保存到字符串数组与.toString()附做到这一点:

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

(未经测试,但这样的事情应该是你的事寻找)

嗯,刚刚阅读您的评论。我不知道有什么更容易或更优雅的方式来做到这一点,对不起。

1

我不认为那里有它的方法:

使用循环为它喜欢:

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

for(int i = 0; i<integerarray.length;++i) 
{ 
    strings[i] = Integer.toString(integerarray[i]); 
}