您的位置:首页 > 其它

数组与list之间的相互转换

2015-12-29 11:24 197 查看
细节还是习惯性的记录下来吧,不然每次都去查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,添加到数组!!!

以上----------------------------------------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  list 数组