Java新手求助:如何将int数组转换为ArrayList和LinkedList?
解决int数组转ArrayList/LinkedList的问题
嗨,作为Java新手遇到这个问题太正常啦,我来帮你捋清楚问题出在哪,以及怎么快速解决~
问题根源
你现在的代码里,Arrays.asList(a)处理的是基本类型int的数组,但Java的泛型只支持引用类型(比如Integer),所以Arrays.asList()会把整个int[]对象当成List的单个元素,而不是把每个int拆成Integer放进List里。这就导致你声明的List<Integer>和实际返回的List<int[]>类型不匹配,自然会报错。
几种实用解决方案
方案1:改用Integer数组(最简单直接)
把你的int数组换成Integer包装类型数组,这样Arrays.asList()就能正确识别每个元素:
package com.pac.work; import java.util.ArrayList; import java.util.Arrays; import java.util.LinkedList; import java.util.List; public class checkarraytoarraylist { public static void main(String[] args) { Integer[] a = {10,25,47,85}; List<Integer> al = new ArrayList<>(Arrays.asList(a)); System.out.println(al); List<Integer> a2 = new LinkedList<>(Arrays.asList(a)); System.out.println(a2); } }
方案2:用Stream API转换(Java 8及以上推荐)
如果不想改动原数组的类型,用Java 8引入的Stream API可以优雅地把int转成Integer并收集到指定集合:
package com.pac.work; import java.util.ArrayList; import java.util.Arrays; import java.util.LinkedList; import java.util.List; import java.util.stream.Collectors; public class checkarraytoarraylist { public static void main(String[] args) { int[] a = {10,25,47,85}; // 转成ArrayList List<Integer> al = Arrays.stream(a) .boxed() // 自动把int装箱成Integer .collect(Collectors.toCollection(ArrayList::new)); System.out.println(al); // 转成LinkedList List<Integer> a2 = Arrays.stream(a) .boxed() .collect(Collectors.toCollection(LinkedList::new)); System.out.println(a2); } }
方案3:手动遍历添加(兼容所有Java版本)
如果你的项目还在用Java 8之前的版本,手动循环数组把每个int添加到集合里是最稳妥的方式:
package com.pac.work; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; public class checkarraytoarraylist { public static void main(String[] args) { int[] a = {10,25,47,85}; List<Integer> al = new ArrayList<>(); for (int num : a) { al.add(num); // 这里会自动把int装箱成Integer } System.out.println(al); List<Integer> a2 = new LinkedList<>(); for (int num : a) { a2.add(num); } System.out.println(a2); } }
小提醒
别忘了导入对应类哦,比如用Stream的话要导入java.util.stream.Collectors,ArrayList、LinkedList这些也得确保导入正确~
内容的提问来源于stack exchange,提问作者vignesh tokyo
相关产品推荐
相关产品推荐

