问题:我在shorts
收集了未知数量的ArrayList<Short>
。完成后,我需要将其放入direct ShortBuffer
。
我的解决方案:编写一个简单的循环。
但在我的最终代码中,这只会进行一次,并不是时间关键。在这种情况下,我总是更喜欢需要更少代码的解决方案。
可以用一两个班轮来完成吗?
编辑:
使用ArrayList<Short>.toArray
我可以获得Short[]
数组,但对于ShortBuffer.put()
,我需要一个short[]
数组。那就是问题所在。
答案 0 :(得分:1)
short[] shortArray = IntStream.range(0, array.length)
.collect(() -> new short[array.length], (b, i) -> b[i] = array[i], null);
我认为只要它不包含空值,就可以将Short[]
转换为short[]
。或者您可以使用toPrimitive
方法执行apache commons lang。
另外,When to use Array, Buffer or direct Buffer:除非有使用直接缓冲的特殊原因,否则你可能不应该这样做。