网站首页 > java教程 正文
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可知:
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中东西还蛮多的。
猜你喜欢
- 2024-09-27 玩转JavaScript的数组(js数组操作方法大全)
- 2024-09-27 软件开发基础知识,Java数组,想学的小白进来吧
- 2024-09-27 七爪源码:Java中的数组(java数组什么意思)
- 2024-09-27 零基础学JAVA教程.第3章 数组与方法
- 2024-09-27 java学习:Java 数组,数组实例方式(一)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)