如何在 Java 中高效地将 int[] 转换为 List<Integer>?
2024-03-23 18:48:00
在 Java 中将 int[] 转换为 List
概述
Java 开发人员经常需要将 int[] 数组转换为 List
方法
方法 1:使用 IntStream 和 Collectors.toList()
Java 8 引入了 IntStream,它提供了对基本 int[] 数组的强大流操作。可以使用 stream() 方法将 int[] 转换为 IntStream,然后使用 boxed() 方法将其转换为 Integer 流。最后,Collectors.toList() 方法可以将流收集到 List
int[] intArray = {1, 2, 3, 4, 5};
List<Integer> integerList = Arrays.stream(intArray).boxed().collect(Collectors.toList());
方法 2:使用 Guava 库
Guava 库提供了 toList() 方法,可以轻松地将 int[] 转换为 List
import com.google.common.collect.Lists;
int[] intArray = {1, 2, 3, 4, 5};
List<Integer> integerList = Lists.newArrayList(intArray);
方法 3:使用 Apache Commons Lang 库
Apache Commons Lang 库也提供了 toObjectList() 方法,可以将 int[] 转换为 List
import org.apache.commons.lang3.ArrayUtils;
int[] intArray = {1, 2, 3, 4, 5};
List<Integer> integerList = ArrayUtils.toObjectList(intArray);
方法 4:使用 ObjectArrays.asList()
ObjectArrays.asList() 方法可以将基本类型数组转换为包含其对象的列表。但是,转换后的列表是不可变的,这意味着无法对其进行修改。
import java.util.Arrays;
int[] intArray = {1, 2, 3, 4, 5};
List<Integer> integerList = Arrays.asList(ObjectArrays.toObject(intArray));
效率对比
对于较小的数组,这些方法的效率大致相同。但是,对于大型数组,方法 1(使用 IntStream 和 Collectors.toList())的效率最高,因为它利用了 Java 8 的流式处理功能。
最佳实践
- 对于小型数组,可以选择任何方法。
- 对于大型数组,建议使用方法 1(使用 IntStream 和 Collectors.toList())来获得最佳性能。
- 如果依赖于第三方库,请确保在项目中添加相应的依赖项。
常见问题解答
-
如何将 List
转换为 int[]?
您可以使用 IntStream 的 toArray() 方法来完成此转换。 -
转换为 List
后,是否可以修改数组元素?
可以,转换后可以修改数组元素,但不会反映在列表中。 -
是否可以将 List
的元素转换为 int[]?
可以,可以使用 IntStream 的 mapToInt() 方法将其转换为 int[]。 -
如何获取 List
的原始 int[] 数组?
可以通过 list.stream().mapToInt(Integer::intValue).toArray() 来获取原始 int[] 数组。 -
如何使用 Lambda 表达式进行转换?
可以这样使用 Lambda 表达式进行转换:List<Integer> integerList = Arrays.stream(intArray).map(Integer::valueOf).toList();