【问题标题】:How to convert int[] to Integer[]? [duplicate]如何将 int[] 转换为 Integer[]? [复制]
【发布时间】:2013-11-26 01:58:18
【问题描述】:

我需要通过 Intent Extras 传递一个原始的 int 数组 (int[]),并在扩展的 BaseAdapter 类中使用它们,所以我需要将 int[] 转换为 Integer[]

我该怎么做?

【问题讨论】:

  • 阵列适配器为您完成这项工作。还有stackoverflow.com/questions/880581/…
  • 最好的解决方案是更改您的代码,这样一开始就不需要这样做。 Integer[] 使用的内存是 int[] 的 7 倍。
  • 现在,数组的成员太少了。所以内存不是大问题。 BaseAdapter(用于画廊)是否适用于原始数组?
  • Trove4j 也有原语的包装器。太糟糕了,网上没有这么多例子。

标签: java android int type-conversion primitive-types


【解决方案1】:

恐怕没有比这更好的解决方案了

int[] a1 = ...
Integer[] a2 = new Integer[a1.length];
for(int i = 0; i < a1.length; i++)
   a2[i] = a1[i];

【讨论】:

  • +1 除了将代码更改为不在任何地方使用 Integer[] ;)
  • 恐怕你是对的 :)
【解决方案2】:

来自@Eddie 的回答here,如果您有权访问 Apache 语言库,您可能想看看这个:

   Integer[] newArray = ArrayUtils.toObject(oldArray);

【讨论】:

  • 仅供参考,我没有对任何人投反对票。
  • 我不会因为被否决而哭泣。我多么希望我能见到我神秘的反对者。 :) 。除此之外,这对你有用吗?@mobilGelistirici
  • 我不知道。没试过。现在将为您尝试:D 嗯,我如何导入 ArrayUtils ?
  • 我认为 import org.apache.commons.lang3.ArrayUtils 应该这样做。
【解决方案3】:

见以下代码:

int[] old = ....    
Integer[] arr = new Integer[old.length];
System.arraycopy(old, 0, arr, 0, old.length);

或者你可以使用Apache lang library,那么你可以像这样使用ArrayUtils.toObject(int[])方法:

Integer[] newArray = ArrayUtils.toObject(oldArray);

【讨论】:

    猜你喜欢
    • 2011-08-07
    • 2010-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多