You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中List<Integer>转int[]数组的高效方法(非mapToInt()实现)

将List转换为int[]数组的高效实现方法(除mapToInt外)

下面是几种高效的实现方式,按性能和实用性排序:

1. 手动遍历填充数组(最优性能)

这是最直接且性能最高的方式,避免了Stream或第三方库的额外开销,尤其适合处理大型列表。利用ArrayList的随机访问特性(get(i)为O(1)操作),直接遍历填充数组:

List<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3));
int[] arr = new int[list.size()];
for (int i = 0; i < list.size(); i++) {
    arr[i] = list.get(i); // 自动拆箱,等价于调用intValue()
}

2. 使用Guava库的Ints.toArray()

如果项目中已经引入Guava依赖,这个封装好的方法内部也是基于手动遍历实现,代码简洁且性能接近手动遍历:

import com.google.common.primitives.Ints;

List<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3));
int[] arr = Ints.toArray(list);

3. 使用Apache Commons Lang库的ArrayUtils.toPrimitive()

依赖Apache Commons Lang库时,可以先将List转为Integer[],再转换为基本类型数组:

import org.apache.commons.lang3.ArrayUtils;

List<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3));
int[] arr = ArrayUtils.toPrimitive(list.toArray(new Integer[0]));

注意事项

  • 所有转换方式都要求List中不能包含null元素,否则会抛出NullPointerException(因为int是基本类型,无法存储null)。
  • 性能对比:手动遍历 ≈ Guava实现 > Apache Commons实现 > Stream的mapToInt方式(Stream存在额外的包装/调度开销)。

内容的提问来源于stack exchange,提问作者0xh3xa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 18:36:26