将基元多头数组转换为多头列表

2022-08-31 07:47:20

这可能是一个有点简单的问题,但我的第一次尝试令人惊讶地完全失败了。我想取一个原始长线数组并将其转换为列表,我试图这样做:

long[] input = someAPI.getSomeLongs();
List<Long> inputAsList = Arrays.asList(input); //Total failure to even compile!

正确的方法是什么?


答案 1

从Java 8开始,您现在可以使用流:

long[] arr = { 1, 2, 3, 4 };
List<Long> list = Arrays.stream(arr).boxed().collect(Collectors.toList());

答案 2

我发现使用apache commons lang ArrayUtils(JavaDocMaven dependency)很方便)

import org.apache.commons.lang3.ArrayUtils;
...
long[] input = someAPI.getSomeLongs();
Long[] inputBoxed = ArrayUtils.toObject(input);
List<Long> inputAsList = Arrays.asList(inputBoxed);

它还具有反向API

long[] backToPrimitive = ArrayUtils.toPrimitive(objectArray);

编辑:更新以提供评论和其他修复建议的完整转换为列表。