将包装器的ArrayList转换为相应的原始类型数组

15 浏览
0 Comments

将包装器的ArrayList转换为相应的原始类型数组

我使用带有包装类Short的ArrayList。

在添加一些值之后,我想获取基本数组,但似乎使用函数toArray(Object[] array)没有办法,因为它需要一个带有包装类的数组。

除了使用for循环或类似的方法之外,还有其他方法吗?

0
0 Comments

问题的原因是作者想要将包装类的ArrayList转换为相应的基本类型数组,但是他不想使用for循环来实现这个转换。解决方法是使用一个for循环来手动填充数组或者使用一个库函数来实现转换。

以下是解决方法的具体内容:

你可以自己填充数组:

ArrayList shorts = ...;
short shortArray[] = new short[shorts.size()];
for (int i = 0; i < shorts.size(); i++)
   shortArray[i] = shorts.get(i);

注意,在赋值行中利用了自动装箱。

你可以使用其他人建议的库,但是为了避免写三行代码,这似乎有点过度设计。

作者想要一个不使用for循环的解决方案。

他没有在任何地方声明过。而且,一个库当然会像上面那样使用for循环,所以循环只是被推到了一些库函数中。

他写道:Is there another way without using a for or anything like that?

好吧,我一定是误读了那句话。对他的问题的答案基本上是他需要一个for循环,可以是在库函数中或者直接编写。

因为它是开源的,所以你可以获取你需要的部分。 🙂

0
0 Comments

问题出现的原因是需要将包装类的ArrayList转换为对应的基本类型数组。然而,Java中并没有提供直接将ArrayList转换为基本类型数组的方法。解决方法是使用org.apache.commons.lang.ArrayUtils工具类中的toPrimitive()方法。需要注意的是,使用该方法会导致数组被复制两次,首先是使用toArray()方法将ArrayList复制为数组,然后再使用toPrimitive()方法将数组复制为基本类型数组。但是,这两个方法都不会返回原始的数组。因此,需要谨慎使用该方法。

0
0 Comments

问题原因:Java中有时需要将包装类的ArrayList转换为对应的基本类型的数组。然而,Java的ArrayList是泛型类,只能存储对象,而不能存储基本类型的数据。因此,需要将包装类的ArrayList转换为基本类型的数组。

解决方法:在Apache Commons / Lang中有一个名为ArrayUtils的类,提供了一些转换方法。这些方法中,toObject()方法将基本类型的数组转换为包装类的数组,而toPrimitive()方法将包装类对象的数组转换为基本类型的数组。

其中,toPrimitive()方法的声明如下:

public static short[] toPrimitive(Short[] array)

该方法将包装类Short的数组转换为基本类型short的数组。

以上内容提到了使用ArrayUtils的toPrimitive()方法进行转换,可以解决将包装类的ArrayList转换为对应的基本类型的数组的需求。

0