返回首页
当前位置: 主页 > 编程语言 > JAVA教程 >

java中数组转为列表的几种方法

时间:2018-01-09 23:58来源:电脑教程学习网 www.etwiki.cn 编辑:admin

java中数组转为集合List,是很基础常见的,日常开发中也经常会用到,今天整理了下,有5种方法,先列出,再慢慢道来。

1、 List list = Arrays.asList(array);

2、new ArrayList(Arrays.asList(array));

3、Collections.addAll(arraylist, array);

4、for(Element e : array) { list.add(e);}

5、Use Guava :Lists.newArrayList(aStringArray);

第一种方法:List list = Arrays.asList(array);

public class TestArray2List {

public static void main(String[] args) {

String array[] = { “支付宝”, “微信”, “银联”, “聚合” };

List<String> result = convert(array) ;

System.out.println(result);

}

public static List<String> convert(String[] arr) {

return Arrays.asList(arr);

}

}

看convert方法,以下几种方法只更改此方法体,方法只做演示,实际开发入参是要判空的,大家写代码的时候要严谨点哦,避免出现异常问题。

运行结果:

[支付宝, 微信, 银联, 聚合]

采坑记:

如果用第一种方法,对转换的结果进行add或remove操作,代码如下:

import java.util.Arrays;

import java.util.List;

public class TestArray2List {

public static void main(String[] args) {

String array[] = { “支付宝”, “微信”, “银联”, “聚合” };

List<String> result = convert(array) ;

result.add(“12306″) ;

result.remove(“聚合”) ;

System.out.println(result);

}

public static List<String> convert(String[] arr) {

return Arrays.asList(arr);

}

}

会抛出java.lang.UnsupportedOperationException异常,看java api可知:

java中数组转为列表的几种方法,推荐第三种

Arrays.asList(arr) 返回的是一个固定大小的列表,不能对其进行add或remove,看源代码可知,Arrays.asList(arr) 返回的是Arrays的静态内部类,可以通过set方法更改其值。

so,此种方法是有缺陷的,大家注意喽!

第二种方法:new ArrayList(Arrays.asList(array));

只更改convert 的方法内容。

public static List<String> convert(String[] arr) {

return new ArrayList<String>(Arrays.asList(arr));

}

这种方法就没有第一种方法的那个坑,但它同时创建2个list,有缺陷。

第三种方法:Collections.addAll(arraylist, array);

import java.util.ArrayList;

import java.util.Arrays;

import java.util.Collections;

import java.util.List;

public class TestArray2List {

public static void main(String[] args) {

String array[] = { “支付宝”, “微信”, “银联”, “聚合” };

List<String> result = convert(array) ;

result.add(“12306″) ;

result.remove(“聚合”) ;

System.out.println(result);

}

public static List<String> convert(String[] arr) {

List<String> arraylist = new ArrayList<String>() ;

Collections.addAll(arraylist, arr);

return arraylist ;

}

}

运行结果:

[支付宝, 微信, 银联, 12306]

此种方法Collections工具的addAll方法,建议使用。

第四种方法:for(Element e : array) { list.add(e);}

public static List<String> convert(String[] arr) {

List<String> arrayList = new ArrayList<String>();

for (String s : arr) {

arrayList.add(s);

}

return arrayList ;

}

此种方法通过for循环添加,建议使用。

第五种方法:Use Guava :Lists.newArrayList(aStringArray);

import java.util.ArrayList;

import java.util.Arrays;

import java.util.Collections;

import java.util.List;

import com.google.common.collect.Lists;

public class TestArray2List {

public static void main(String[] args) {

String array[] = { “支付宝”, “微信”, “银联”, “聚合” };

List<String> result = convert(array) ;

result.add(“12306″) ;

result.remove(“聚合”) ;

System.out.println(result);

}

public static List<String> convert(String[] arr) {

return Lists.newArrayList(arr) ;

}

}

此种方法,需要引入google Guava的jar包,使用maven的课添加如下依赖:

<dependency>

<groupId>com.google.guava</groupId>

<artifactId>guava</artifactId>

<version>20.0</version>

</dependency>

此种方法其实内部使用的也是第三种方法:

Collections.addAll(arraylist, array) 。

所以推荐大家使用第三种、第四种、第五种,可以优先使用 第三种。

OK,大家有兴趣的话可以自己去研究,JDK中东西还蛮多的。

顶一下
(0)
0%
踩一下
(0)
0%
标签(Tag):java Java开发规范
------分隔线----------------------------
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
验证码:点击我更换图片
推荐内容