有没有一种优雅的方法可以将基元数组转换为相应容器对象的数组——例如,将 byte[]
转换为 Byte[]
?还是我坚持循环并手动执行?
是的, for
循环并不十分困难。只是有点丑。
原文由 BlairHippo 发布,翻译遵循 CC BY-SA 4.0 许可协议
有没有一种优雅的方法可以将基元数组转换为相应容器对象的数组——例如,将 byte[]
转换为 Byte[]
?还是我坚持循环并手动执行?
是的, for
循环并不十分困难。只是有点丑。
原文由 BlairHippo 发布,翻译遵循 CC BY-SA 4.0 许可协议
你必须遍历你的数组。
在@seanizer 回答后更新:
基本上 toObject(byte[] array)
方法将为您执行循环:
public static Byte[] toObject(byte[] array) {
if (array == null) {
return null;
} else if (array.length == 0) {
return EMPTY_BYTE_OBJECT_ARRAY;
}
final Byte[] result = new Byte[array.length];
for (int i = 0; i < array.length; i++) {
result[i] = new Byte(array[i]);
}
return result;
}
除非你真的要使用公共语言库,否则你应该简单地重用这个方法并避免无用的依赖(恕我直言)。
原文由 Colin Hebert 发布,翻译遵循 CC BY-SA 2.5 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4.1k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
3 回答1.7k 阅读✓ 已解决
阿帕奇公地
Apache Commons / Lang 有一个类 ArrayUtils 定义了这些方法。
toObject(...)
从原始数组转换为包装器数组toPrimitive(...)
从包装器对象数组转换为原始数组例子:
番石榴
但是后来我会说包装基元数组不是很有用,所以你可能想看看 Guava ,它提供了所有数字类型的列表,由基元数组支持:
这些数组支持的集合的好处是
参见: 番石榴解释/原语
Java 8
另一方面,使用 Java 8 lambdas / streams,您可以在不使用外部库的情况下使这些转换变得非常简单:
Note that the Java 8 version works for
int
,long
anddouble
, but not forbyte
, as Arrays.stream() only具有—-T[]
int[]
,long[]
double[]