将一个原始long数组转换为Longs列表

问题

这可能是一个简单的问题,但是我的第一次尝试完全没有成功。我想取一个原始long的数组并将其转换为一个列表,我试图这样做:

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

这样做的正确方法是什么?


#1 热门回答(96 赞)

我发现使用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);

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


#2 热门回答(73 赞)

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

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

#3 热门回答(37 赞)

import java.util.Arrays;
import org.apache.commons.lang.ArrayUtils;

List<Long> longs = Arrays.asList(ArrayUtils.toObject(new long[] {1,2,3,4}));