Java 是否有任何方法可以复制集合上的基元数组,反之亦然,并自动包装/展开它们?
例如:这段代码是正确的,因为我使用的是整数对象Java 是否有任何方法可以复制集合上的基元数组,反之亦然,并自动包装/展开它们?,java,arrays,Java,Arrays,例如:这段代码是正确的,因为我使用的是整数对象 Integer[] numbers = {32, 3, 5, 57, 1}; List <Integer> list = new ArrayList <> (Arrays.asList(numbers)); 我知道我可以在数组中使用for each,包装每个int数据,然后使用add(),但我想知道是否有任何方法可以直接实现这一点。在Java 8中,您可以使用streams获得更简洁的代码: int[] primitive
Integer[] numbers = {32, 3, 5, 57, 1};
List <Integer> list = new ArrayList <> (Arrays.asList(numbers));
我知道我可以在数组中使用for each,包装每个int数据,然后使用add(),但我想知道是否有任何方法可以直接实现这一点。在Java 8中,您可以使用streams获得更简洁的代码:
int[] primitives = {32, 3, 5, 57, 1};
List<Integer> objects = IntStream.of(primitives)
.boxed()
.collect(Collectors.toList());
下面是使用ApacheCommons的方法
import java.util.Arrays;
import org.apache.commons.lang.ArrayUtils;
List<Integer> longs = Arrays.asList(ArrayUtils.toObject(new int[] {1,2,3,4}));
导入java.util.array;
导入org.apache.commons.lang.ArrayUtils;
List longs=Arrays.asList(ArrayUtils.toObject(newint[]{1,2,3,4}));
或使用
int[] arr = {1,2,3,4};
int<Long> list = Arrays.stream(arr).boxed().collect(Collectors.toList());
int[]arr={1,2,3,4};
int list=Arrays.stream(arr.boxed().collect(Collectors.toList());
如果我使用apache commons或guava,您只能对相同的基本类型使用system
的数组复制函数。当用户试图在没有commons/guava的PC上运行程序时,我是否会遇到兼容性问题?只需将必需的apache
jar添加到类路径中,您就可以解决问题或在eclipse中添加jar构建路径“投票需要15个声望”对不起!XD非常感谢,巴尔加夫。@VicenteParra使用绿色标记符号将其标记为已接受的答案,如果它对您有帮助,我的朋友:)
import java.util.Arrays;
import org.apache.commons.lang.ArrayUtils;
List<Integer> longs = Arrays.asList(ArrayUtils.toObject(new int[] {1,2,3,4}));
int[] arr = {1,2,3,4};
int<Long> list = Arrays.stream(arr).boxed().collect(Collectors.toList());