栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java种List和Array的相互转换

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java种List和Array的相互转换

1.说明       (原文)

在Java中,经常遇到需要List与数组互相转换的场景。
List->数组,可以使用List的toArray()或者toArray(T[] a)方法。
数组->List,可以使用Arrays.asList()或者Collections.addAll()方法。

2.List->数组 2.1    Object[] toArray();

这个无参方法将List直接转为Object[]数组。

        2.1.1 错误用法:
List strList = new ArrayList<>();
strList.add("list-a");
strList.add("list-b");
String[] strArray = (String[]) strList.toArray();

 错误原因:返回Object[]类型,无法强转成String[]类型

        2.1.2 正确用法:
List strList = new ArrayList<>();
Object[] strArray = strList.toArray();

得到了一个通常情况下没啥用的Object[]。 要想得到自己想要类型的数组,需要用toArray(T[] a)方法。

2.2   T[] toArray(T[] a)
//list转数组
    public void list2arrayTest(int size){
        List strList = new ArrayList<>();
        strList.add("list-a");
        strList.add("list-b");
        String[] strArray1 = new String[size];
        String[] strArray2 = strList.toArray(strArray1);
    }
        2.2.1 size

得到的strArray1和strArray2不是一个对象。

         2.2.2 size==strList.size()

 得到的strArray1和strArray2是一个对象。

        2.2.3 size>strList.size()

 得到的strArray1和strArray2是一个对象,数组中多余的位置为null。

 3.数组->list 3.1使用Arrays.asList()方法

注意:

该方法的返回值是java.util.Arrays类中一个私有静态内部类java.util.Arrays.ArrayList,它并非java.util.ArrayList类。
java.util.Arrays.ArrayList类具有set(),get(),contains()等方法,
但是不支持添加add()或删除remove()方法,调用这些方法会报错。

//数组转list
    public  void array2listTest(){
        String[] strArray = { "array-a", "array-b" };
        List strList = Arrays.asList(strArray);//Returns a fixed-size list backed by the specified array

        strList.add("array-c");//会报错
    }

错误信息:

Exception in thread "main" java.lang.UnsupportedOperationException
	at java.util.AbstractList.add(AbstractList.java:148)
	at java.util.AbstractList.add(AbstractList.java:108)
	at xn.xnjt.list.ArrayListTest.array2listTest(ArrayListTest.java:32)
	at xn.xnjt.list.ArrayListTest.main(ArrayListTest.java:17)

解决办法:新建一个java.util.ArrayList对象,再添加元素。

//数组转list
    public  void array2listTest(){
        String[] strArray = { "array-a", "array-b" };
        List strList = Arrays.asList(strArray);//Returns a fixed-size list backed by the specified array

        List strList1=new ArrayList<>(strList);
        strList1.add("array-c");//会报错
    }

 3.2.使用Collections.addAll()方法

可以直接添加新元素

public void array2listTest1(){
        String[] strArray = { "array-a", "array-b" };
        List strList = new ArrayList<>(strArray.length);
        Collections.addAll(strList, strArray);
        strList.add("array-c");

    }

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/682792.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号