数组与list之间的相互转换


细节还是习惯性的记录下来吧,不然每次都去查API挺耗时间的!!


一、数组转成list


第一种方式:

// 初始化数组
String[] arr = new String[] { "1", "2", "3" };

// 待转换成的list
List<String> list = new ArrayList<String>();

// 通过Collections转换
Collections.addAll(list, arr);

第二种方式:

// 初始化数组
String[] arr = new String[] { "1", "2", "3" };

// 通过Arrays转换成list
List<String> list = Arrays.asList(arr);

注意:Arrays.asList()返回一个受指定数组支持的固定大小的列表。所以不能做Add、Remove等操作。

例如:接上面     list.add("4");         运行时则会报异常:java.lang.UnsupportedOperationException


如果想对上述转换后的list再进行add等操作,可以如下:

// 通过list构造函数转换成可操作的list(add等)
List<String> list = new ArrayList<String>(Arrays.asList(arr));

第三种方式(中规中矩的操作,不推荐):

循环数组,把每个元素添加到list中!!!



二、List 转数组


第一种方式:

// 初始化list
List<String> list = new ArrayList<String>();

// 添加数据
list.add("1");
list.add("2");
list.add("3");

// 通过toArray转换
Object[] arr = list.toArray();

注意:用list.toArray()方法返回的是个Object类型的数组,很多人在这里想要得到一个String[]型的数组,就直接像这样强转了:

String[] arr = (String[])list.toArray();   

这种写法是错误的,没有这样的强制转法,编译时不会报错,但是运行时会报不能转换的异常:

java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;

解决上面的问题有两种方式:

1.循环Object数组,单个转换

2.改为API的实现方法

// 先定义一个数组
String[] arr = new String[list.size()];

// 然后再通过toArray转换
list.toArray(arr);



第二种方式:

循环遍历list,添加到数组!!!




以上----------------------------------------------------





评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值