将基元多头数组转换为多头列表
2022-08-31 07:47:20
这可能是一个有点简单的问题,但我的第一次尝试令人惊讶地完全失败了。我想取一个原始长线数组并将其转换为列表,我试图这样做:
long[] input = someAPI.getSomeLongs();
List<Long> inputAsList = Arrays.asList(input); //Total failure to even compile!
正确的方法是什么?
这可能是一个有点简单的问题,但我的第一次尝试令人惊讶地完全失败了。我想取一个原始长线数组并将其转换为列表,我试图这样做:
long[] input = someAPI.getSomeLongs();
List<Long> inputAsList = Arrays.asList(input); //Total failure to even compile!
正确的方法是什么?
从Java 8开始,您现在可以使用流:
long[] arr = { 1, 2, 3, 4 };
List<Long> list = Arrays.stream(arr).boxed().collect(Collectors.toList());
我发现使用apache commons lang ArrayUtils(JavaDoc,Maven 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);
编辑:更新以提供评论和其他修复建议的完整转换为列表。