是否有一种优雅的方法将原语数组转换为相应容器对象的数组- 例如,将a byte[]
转换为a Byte[]
?还是我坚持循环浏览并手动执行?
是的,for
循环并不完全困难。有点丑。
Apache Commons
Apache Commons /
Lang
有一个ArrayUtils类,用于定义这些方法。
toObject(...)
从原始数组转换为包装器数组的方法toPrimitive(...)
从包装对象数组到原始数组的所有转换例:
final int[] original = new int[] { 1, 2, 3 };
final Integer[] wrappers = ArrayUtils.toObject(original);
final int[] primitivesAgain = ArrayUtils.toPrimitive(wrappers);
assert Arrays.equals(original, primitivesAgain);
番石榴
但是然后我会说,包装后的基元数组不是很有用,因此您可能想看看番石榴,它提供了所有数值类型的列表,并由基元数组支持:
List<Integer> intList = Ints.asList(1,2,3,4,5);
List<Long> longList = Longs.asList(1L,2L,3L,4L,5L);
// etc.
这些数组支持的集合的好主意是
参见:番石榴解释/原始
Java 8
另一方面,使用Java 8 lambda /流,您可以在不使用外部库的情况下使这些转换非常简单:
int[] primitiveInts = {1, 2, 3};
Integer[] wrappedInts = Arrays.stream(primitiveInts)
.boxed()
.toArray(Integer[]::new);
int[] unwrappedInts = Arrays.stream(wrappedInts)
.mapToInt(Integer::intValue)
.toArray();
assertArrayEquals(primitiveInts, unwrappedInts);
double[] primitiveDoubles = {1.1d, 2.2d, 3.3d};
Double[] wrappedDoubles = Arrays.stream(primitiveDoubles)
.boxed()
.toArray(Double[]::new);
double[] unwrappedDoubles = Arrays.stream(wrappedDoubles)
.mapToDouble(Double::doubleValue)
.toArray();
assertArrayEquals(primitiveDoubles, unwrappedDoubles, 0.0001d);
请注意,在Java
8版本适用int
,long
并且double
,而不是byte
作为Arrays.stream()只具有过载int[]
,long[]
,double[]
或者一个通用的对象T[]
。
问题内容: 我是Java编程的新手。我的问题是,我有一个数组,但是当我尝试将其转换为数组时,我不断 我的代码是 任何帮助将是极大的感谢!!! 问题答案: 要摆脱其他空格,您可以像这样更改代码:
问题内容: 注意: 这要求与通常的元组到数组的转换相反。 我必须将一个参数传递给(包装的c ++)函数作为嵌套元组。例如,以下作品 而以下 不 不幸的是,我想使用的参数是一个numpy数组。对于某些N,该阵列的尺寸始终为2xN,这可能会很大。 有没有简单的方法可以将其转换为元组?我知道我可以循环遍历,创建一个新的元组,但是如果numpy数组提供了一些不错的访问权限,我会更喜欢。 如果不可能如我所愿
我很难理解为什么一维数组到基元数组的转换失败,而二维情况下却有效。 我试着翻阅文件,但没有用。我可以看到的一件事是,在第一种情况下,由于我们试图将转换为,所以可能导致错误,而第二种情况可以正常工作,因为将是一个对象类型。 用一个示例来解释的工作原理,特别是对基元的工作原理,将非常有帮助。
问题内容: 概述Java程序如何将诸如“ 1,2,3,4,5”之类的字符串转换为数组({1,2,3,4,5}) 问题答案: 从zvzdhk: 然后,解析您的整数:
问题内容: 我正在尝试将Java中的Javascript数组转换为Java数组。我正在使用javax.script包。我在这里测试了此示例,但是无法识别类型“ NativeArray” 我如何才能识别NativeArray类型? 问题答案: 按照这个答案,看来最好的选择是编写一个JavaScript转换器函数,该函数使用Rhino的Java绑定功能将本机JavaScript数组转换为Java数组。
问题内容: 我将 ArrayList 与包装器类 Short一起使用 。 添加一些值后,我想获取原始数组,但是似乎该函数没有办法,因为它需要带有包装器类的 Array 。 是否有另一种方法不使用for或类似的东西? 问题答案: Apache Commons / Lang 有一个ArrayUtils类,用于定义这些方法。 所有调用的方法都从原始数组转换为包装器数组。 从包装对象数组到原始数组的所有转