主要介绍Java中Java 中数组Array和列表List的转换。
一、数组Array转列表List
1.使用Collections.addAll()方法
使用Collections.addAll()方法,返回的List可以执行新增add方法,但该种方式只针对引用对象,不针对基本数据类型,该种方法效率较高,推荐用法。
int[] arr = new int[]{1, 2, 3}; Integer[] integersArr = new Integer[]{1, 2, 3}; String[] stringsArr = new String[]{"aa", "bb", "cc"}; //方法1:使用Collections.addAll()方法,可以执行新增add方法,只针对引用对象,效率较高,【推荐用法】 List<Integer> list = new ArrayList<>(integersArr.length); Collections.addAll(list, integersArr); list.add(22); System.out.println("list = " + list); List<String> list01 = new ArrayList<>(stringsArr.length); Collections.addAll(list01, stringsArr); list01.add("dd"); System.out.println("list01 = " + list01);
2.使用new ArrayList<>()构造器方法
new ArrayList<>()构造器可以传入Arrays.asList(integersArr)生成的List,这种方式也可以执行新增add方法,但该种方式只针对引用对象,不针对基本数据类型。
List<Integer> list1 = new ArrayList<>(Arrays.asList(integersArr)); list1.add(11); System.out.println("list1 = " + list1);
3.使用Stream方法
在JDK8的Stream流式计算中,可以对int[],long[],double[]这类基本数据类型数组转换为对于包装类型的数组,当然直接对包装类型的数组也可以转换成列表形式。所以这种方法的优势是可以转换基本数据类型。
List<Integer> list2 = Arrays.stream(arr).boxed().collect(Collectors.toList()); System.out.println("list2 = " + list2); List<Integer> list21 = Arrays.stream(integersArr).collect(Collectors.toList()); System.out.println("list21 = " + list21);
以上3种转换的执行结果为:
二、列表转数组
1.使用Stream方法
将List转为Array主要使用的Stream方法,需要重点注意的是List转换为int[]和Integer[]有较大区别。
List<Integer> list = new ArrayList<>(); list.add(1); list.add(2); list.add(3); //List<Integer> --> int[] int[] ints = list.stream().mapToInt(Integer::intValue).toArray(); //List<Integer> --> Integer[] Integer[] integersArr = list.toArray(new Integer[list.size()]); //int[]--> Integer[] Integer[] integersArr1 = Arrays.stream(ints).boxed().toArray(Integer[]::new); //Integer[] --> int[] int[] ints1 = Arrays.stream(integersArr).mapToInt(Integer::intValue).toArray(); System.out.println("ints = " + Arrays.toString(ints)); System.out.println("integersArr = " + Arrays.toString(integersArr)); System.out.println("integersArr1 = " + Arrays.toString(integersArr1)); System.out.println("ints1 = " + Arrays.toString(ints1));
执行结果:
代码地址:https://github.com/yangnk/JavaHelloworld/blob/master/src/main/java/lang/LIstToArrTest.java
参考资料
- Java数组转List的三种方式及对比:https://blog.csdn.net/x541211190/article/details/79597236
- int数组和Integer数组以及List<Integer>集合三者的相互转化:https://blog.csdn.net/ASDQWE09876/article/details/79271992