Java基础之数组与List之间的互相转换(常见的几种方式,一看就懂)

您所在的位置:网站首页 list转换成数组 Java基础之数组与List之间的互相转换(常见的几种方式,一看就懂)

Java基础之数组与List之间的互相转换(常见的几种方式,一看就懂)

2022-06-08 13:36| 来源: 网络整理| 查看: 265

CSDN原文链接:Java基础之数组与List之间的互相转换(常见的几种方式,一看就懂)

1. List转数组

这些东西都是简单易懂,就是容易忘记,所以下面介绍都是直接给代码

1.1 方式一:toArray() image.png 1.2 方式二:list.toArray(new String[list.size()]) image.png image.png 1.3 方式三:list.stream().toArray() image.png 1.4 方式四:list.stream().toArray(String[]::new); 下面的 String[]::new 这种写法是Java8的新特性,不明白的自己可以下去看看Java新特性,下面我们的方式五是替换这种方法,方便大家的理解 image.png 1.5 方式五: 这种方式很少用,我们写出来主要是为了理解:上面方式四 list.stream().toArray(String[]::new); 的这种写法,看完之后应该明白,String[]::new 其实是调用了构造方法,还不是很清楚的,自己下去看看源码再了解一下Lambda表达式就明白了。 image.png image.png 2. 数组转List 2.1 方式一:Arrays.asList(strS)

需要注意:不能对List进行增删操作

image.png 2.2 方式二:new ArrayList(Arrays.asList(strS)) image.png 2.3 方式三:使用 Stream image.png 2.4 方式四:Collections.addAll(list,strS); image.png 3. 附测试代码 3.1 list 转数组的代码 package com.liu.susu.base.coollection.array; import org.junit.Test; import java.util.ArrayList; import java.util.List; import java.util.function.IntFunction; /** * @FileName example1 * @Description * @Author susu * @date 2022-03-01 **/ public class ListToArray { /** * 方式一:Object[] result = arrayList.toArray(); * 对结果 Object[] 不能强转 */ @Test public void listToArrayTest1(){ ArrayList arrayList = new ArrayList(); arrayList.add("aa"); arrayList.add("cc"); arrayList.add("dd"); Object[] result = arrayList.toArray();//注意此处不能向下强转成String for (int i = 0; i < result.length; i++) { System.out.println(result[i]); } /********************下面强转报错,返回结果是Object[],不能强转***************************/ //java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String; /*String[] array = (String[]) arrayList.toArray(); for (String s : array) { System.out.println(s); }*/ } /** * 方式二(分写): * String[] strings = new String[list.size()]; * list.toArray(strings); */ @Test public void listToArrayTest2_1(){ List list = new ArrayList(); list.add("aa"); list.add("cc"); list.add("dd"); String[] strings = new String[list.size()]; list.toArray(strings); for (String s : strings) { System.out.println(s); } } /** * 方式二(简写):String[] strings = list.toArray(new String[list.size()]); */ @Test public void listToArrayTest2_2(){ List list = new ArrayList(); list.add("aa"); list.add("cc"); list.add("dd"); String[] strings = list.toArray(new String[list.size()]); for (int i = 0; i < strings.length; i++) { System.out.println(strings[i]); } } /** * 方式三:Object[] objects = list.stream().toArray(); * 对结果 Object[] 不能强转 */ @Test public void listToArrayTest3(){ List list = new ArrayList(); list.add("aa"); list.add("cc"); list.add("dd"); Object[] objects = list.stream().toArray(); for (Object object : objects) { System.out.println(object); } } /** * 方式四:String[] strings = list.stream().toArray(String[]::new); */ @Test public void listToArrayTest4(){ List list = new ArrayList(); list.add("aa"); list.add("cc"); list.add("dd"); String[] strings = list.stream().toArray(String[]::new); for (String s : strings) { System.out.println(s); } } /** * 方式五:对上述方式四的解释 */ @Test public void listToArrayTest5(){ List list = new ArrayList(); list.add("aa"); list.add("cc"); list.add("dd"); String[] strings2 = list.stream().toArray(new IntFunction() { @Override public String[] apply(int value) { return new String[list.size()]; } }); for (String s : strings2) { System.out.println(s); } System.out.println("=========================================="); String[] strings3 = list.stream().toArray(new IntFunction () { @Override public String[] apply(int value) { return new String[value]; } }); for (String s : strings3) { System.out.println(s); } } } 3.2 数组转list的代码 package com.liu.susu.base.coollection.array; import org.junit.Test; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; /** * @FileName ArrayToList * @Description * @Author susu * @date 2022-03-01 **/ public class ArrayToList { @Test /** * 方式一:Arrays.asList(strS) * Arrays.asList(strS)通过这种方式将数组转换为List后,只能作为数据源读取使用 * 不能进行增删操作 */ public void arrayToListTest1(){ String[] strS = {"aa","bb","cc"}; List stringList = Arrays.asList(strS); // stringList.add("dd"); //不能对List增删,只能查改,否则抛异常。 for (String s : stringList) { System.out.println(s); } } /** * 方式二:new ArrayList(Arrays.asList(strS)) * 通过ArrayList的构造器创建:new ArrayList(Arrays.asList(strS)) * 支持增删操作 * 备注:对List进行增删改查操作,在List的数据量不大的情况下,可以使用 */ @Test public void arrayToListTest2(){ String[] strS = {"aa","bb","cc"}; ArrayList list = new ArrayList(Arrays.asList(strS)); list.add("dd");//支持增删操作 for (String s : list) { System.out.println(s); } } /** * 方式三Java8:Stream.of(strS).collect(Collectors.toList()) * 支持增删操作 */ @Test public void arrayToListTest3(){ String[] strS = {"aa","bb","cc"}; List stringList = Stream.of(strS).collect(Collectors.toList()); stringList.add("ff"); stringList.forEach(System.out::println); } /** * 方式四Java8:Collections.addAll(list,strS); * 支持增删操作 * 备注:对List进行增删改查操作,在List的数据量巨大的情况下,优先使用,可以提高操作速度。 */ @Test public void arrayToListTest4(){ String[] strS = {"aa","bb","cc"}; // List list = new ArrayList(strS.length); List list = new ArrayList(); Collections.addAll(list,strS); list.add("mm"); for (String s : list) { System.out.println(s); } } } 4. 另:数组和集合的遍历

Java基础之常见遍历方法(一看就懂).



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3