在Java中将List 对象转换为long 数组的最佳方法是什么?
是否有任何实用方法将数值类型列表转换为基本类型数组? 换句话说,我正在寻找比这更好的解决方案。
private long[] toArray(List values) { long[] result = new long[values.size()]; int i = 0; for (Long l : values) result[i++] = l; return result; }
从Java 8开始,您可以执行以下操作:
long[] result = values.stream().mapToLong(l -> l).toArray();
这里发生了什么事?
- 我们将
List
转换为Stream
。 - 我们在其上调用
mapToLong
来获取LongStream
-
mapToLong
的参数是ToLongFunction
,其结果类型为long
。 - 因为Java自动将
Long
为long
,所以在lambda表达式工作时写l -> l
。Long
在那里被转换为很long
。 我们也可以更明确地使用Long::longValue
。
-
- 我们调用
toArray
,返回long[]
谷歌番石榴 : Longs.toArray(collections)
long[] result = Longs.toArray(values);
使用Apache Commons中的 ArrayUtils.toPrimitive(Long[] array)
。
Long[] l = values.toArray(new Long[values.size()]); long[] l = ArrayUtils.toPrimitive(l);
我不记得有些本机方法可以做到这一点,但创建一个自我的方法有什么问题;-)。
public class YasinUtilities { public static long[] toArray(Iterator