返回

如何在 Java 中高效地将 int[] 转换为 List<Integer>?

java

在 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。但是,需要确保在项目中添加了 Guava 依赖项。

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。需要确保在项目中添加了 Apache Commons Lang 依赖项。

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())来获得最佳性能。
  • 如果依赖于第三方库,请确保在项目中添加相应的依赖项。

常见问题解答

  1. 如何将 List 转换为 int[]?
    您可以使用 IntStream 的 toArray() 方法来完成此转换。

  2. 转换为 List 后,是否可以修改数组元素?
    可以,转换后可以修改数组元素,但不会反映在列表中。

  3. 是否可以将 List 的元素转换为 int[]?
    可以,可以使用 IntStream 的 mapToInt() 方法将其转换为 int[]。

  4. 如何获取 List 的原始 int[] 数组?
    可以通过 list.stream().mapToInt(Integer::intValue).toArray() 来获取原始 int[] 数组。

  5. 如何使用 Lambda 表达式进行转换?
    可以这样使用 Lambda 表达式进行转换:

    List<Integer> integerList = Arrays.stream(intArray).map(Integer::valueOf).toList();