将包装器的ArrayList转换为相应的原始类型数组
问题的原因是作者想要将包装类的ArrayList转换为相应的基本类型数组,但是他不想使用for循环来实现这个转换。解决方法是使用一个for循环来手动填充数组或者使用一个库函数来实现转换。
以下是解决方法的具体内容:
你可以自己填充数组:
ArrayListshorts = ...; 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循环,可以是在库函数中或者直接编写。
因为它是开源的,所以你可以获取你需要的部分。 🙂
问题原因:Java中有时需要将包装类的ArrayList转换为对应的基本类型的数组。然而,Java的ArrayList是泛型类,只能存储对象,而不能存储基本类型的数据。因此,需要将包装类的ArrayList转换为基本类型的数组。
解决方法:在Apache Commons / Lang中有一个名为ArrayUtils的类,提供了一些转换方法。这些方法中,toObject()方法将基本类型的数组转换为包装类的数组,而toPrimitive()方法将包装类对象的数组转换为基本类型的数组。
其中,toPrimitive()方法的声明如下:
public static short[] toPrimitive(Short[] array)
该方法将包装类Short的数组转换为基本类型short的数组。
以上内容提到了使用ArrayUtils的toPrimitive()方法进行转换,可以解决将包装类的ArrayList转换为对应的基本类型的数组的需求。