大家好,又见面了,我是你们的朋友全栈君。
文章目录
- 一、使用Arrays.asList()
- 二、通过ArrayList的构造器
- 三、集合工具类Collections.addAll()
- 四、Java8 stream流
- 五、Java9 内置方法
- 六、第三方的工具类
一、使用Arrays.asList()
通过 Arrays.asList(strArray)
方式,将数组转换List后,不能对List增删,只能查改,否则抛异常。
测试代码如下:
代码语言:javascript复制public static void way1(){
List<String> list = Arrays.asList("1", "2");
//对转换后的list插入一条数据
list.add("3");
System.out.println(list);
}
// 调用代码省略
运行后报错:
报错原因:
Arrays.asList(strArray)
返回值是java.util.Arrays
类中一个私有静态内部类java.util.Arrays.ArrayList
,它并非java.util.ArrayList
类。java.util.Arrays.ArrayList
类具有 set(),get(),contains()等方法,但是不具有添加add()
或删除remove()
方法,所以调用add()
方法会报错。 使用场景:Arrays.asList(strArray)
方式仅能用在将数组转换为List后,不需要增删其中的值,仅作为数据源读取使用。
二、通过ArrayList的构造器
将Arrays.asList()
的返回值由java.util.Arrays.ArrayList
转为java.util.ArrayList
。
测试代码:
代码语言:javascript复制public static void way2(){
ArrayList<String> list = new ArrayList<String>(Arrays.asList("1", "2")) ;
//对转换后的list插入一条数据
list.add("3");
System.out.println(list);
}
// 调用代码省略
运行结果:
代码语言:javascript复制[1, 2, 3]
三、集合工具类Collections.addAll()
根据数组的长度创建一个长度相同的List,然后通过Collections.addAll()
方法,将数组中的元素转为二进制,然后添加到List中,这是最高效的方法。
测试代码:
代码语言:javascript复制public static void way3(){
String[] strArray = {
"1", "2"};
ArrayList< String> arrayList = new ArrayList<String>(strArray.length);
Collections.addAll(arrayList, strArray);
arrayList.add("3");
System.out.println(arrayList);
}
// 调用代码省略
运行结果:
代码语言:javascript复制[1, 2, 3]
使用场景:
需要在将数组转换为List后,对List进行增删改查操作,在List的数据量巨大的情况下,优先使用,可以提高操作速度。
四、Java8 stream流
如果JDK版本在1.8以上,可以使用流stream来将下列3种数组快速转为List,分别是int[]、long[]、double[],其他数据类型比如short[]、byte[]、char[],在JDK1.8中暂不支持。由于这只是一种常用方法的封装,不再纳入一种崭新的数组转List方式,暂时算是java流送给我们的常用工具方法吧。
测试代码:
代码语言:javascript复制public static void way4(){
// String数组
String[] arrays = {
"a", "b", "c"};
List<String> stringList= Stream.of(arrays).collect(Collectors.toList());
// int[]、long[]、 double[]
List<Integer> intList= Arrays.stream(new int[] {
1, 2, 3, }).boxed().collect(Collectors.toList());
List<Long> longList= Arrays.stream(new long[] {
1, 2, 3 }).boxed().collect(Collectors.toList());
List<Double> doubleList= Arrays.stream(new double[] {
1, 2, 3 }).boxed().collect(Collectors.toList());
System.out.println(stringList);
System.out.println(intList);
System.out.println(longList);
System.out.println(doubleList);
}
五、Java9 内置方法
测试代码:
代码语言:javascript复制List<String> list1 = List.of("4", "5", "6");
也不可以进行add
操作
六、第三方的工具类
很多第三方的集合工具类可以实现这个功能,如Guava等:
代码语言:javascript复制ImmutableList.of("a", "b", "c", "d");
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/172251.html原文链接:https://javaforall.cn