【问题标题】:Java: Copy array of Integers into Array of StringsJava:将整数数组复制到字符串数组中
【发布时间】:2012-02-27 11:58:37
【问题描述】:

考虑一个签名包含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

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

【问题讨论】:

  • 这不是问题,但我认为会有更优雅的东西,也许让人想起 Python 的列表理解。
  • 无论哪种方式的底线是java必须单独转换每个元素,所以你能找到的任何方式都可能看起来更好,但执行一个循环

标签: java arrays string integer


【解决方案1】:

如果您不想避免循环,那么您可以这样做:

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,没有接受它。如果没有任何一条线,这可能是正确的答案。
  • 所以正确的答案是你已经知道的不是吗?
  • 第二种解决方案为所有索引大于0的字符串元素添加无关空格。
  • @simon: .split("\\s*,\\s*"); 将删除所有空格。
【解决方案2】:

您可以通过迭代 Int-Array 并将每个元素保存到 String-Array 中并附加 .toString() 来手动完成:

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

(未经测试,但应该是您正在寻找的东西)

嗯,请阅读您的评论。抱歉,我不知道有什么更简单或更优雅的方法。

【讨论】:

    【解决方案3】:

    我认为没有办法:

    为它使用一个循环,例如:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多