如何在Java中不使用for循环将ArrayList<Integer>转为int[]及报错解决
解决ArrayList转int[]的类型不兼容问题
你遇到的错误是因为list.toArray()默认返回Object[]类型,无法直接转换为int[]。以下是几种无需for循环的解决方案:
原生Java 8+ Stream API(推荐,无需额外依赖)
利用Stream的mapToInt方法将Integer转换为int,再通过toArray()生成目标数组:
public static void main(String[] args) { ArrayList<Integer> list = new ArrayList<>(); list.add(1); list.add(2); list.add(3); list.add(4); list.add(5); list.add(5); // 方案1:调用Integer的intValue方法 int[] arr1 = list.stream().mapToInt(Integer::intValue).toArray(); // 方案2:利用自动拆箱简化写法 int[] arr2 = list.stream().mapToInt(i -> i).toArray(); }
使用Apache Commons Lang工具类
如果项目中已经引入Apache Commons Lang库,可以借助ArrayUtils.toPrimitive方法:
import org.apache.commons.lang3.ArrayUtils; public static void main(String[] args) { ArrayList<Integer> list = new ArrayList<>(); list.add(1); list.add(2); list.add(3); list.add(4); list.add(5); list.add(5); Integer[] tempArray = list.toArray(new Integer[0]); int[] arr = ArrayUtils.toPrimitive(tempArray); }
使用Guava工具类
若项目依赖Guava库,Ints.toArray方法可以直接完成转换:
import com.google.common.primitives.Ints; public static void main(String[] args) { ArrayList<Integer> list = new ArrayList<>(); list.add(1); list.add(2); list.add(3); list.add(4); list.add(5); list.add(5); int[] arr = Ints.toArray(list); }
内容的提问来源于stack exchange,提问作者Tapish Katiyar
相关产品推荐
相关产品推荐

