话不多说:直接上代码:
import java.util.Arrays;
import java.util.List;
/**
* @author yh128
* @version 1.0.0
* @ClassName JavaUtilLearn.java
* @Description 基础练习
* @Param
* @createTime 2019年06月11日 09:37:00
*/
public class JavaUtilLearn {
public static void main(String[] args) {
new JavaUtilLearn().intAsList();
System.out.println("----------------------------------------------");
new JavaUtilLearn().stringAsList();
}
/**
* 整型数组使用Arrays里面的asList方法
*/
public void intAsList() {
Integer[] arr = {1, 2, 3};
List<Integer> ints = Arrays.asList(arr);
System.out.println("使用封装类型转换:" + ints.size());
int[] intArr = {1, 2, 3};
List<int[]> ints1 = Arrays.asList(intArr);
System.out.println("使用基础基本类型转换:" + ints1.size());
}
/**
* 字符串数组使用Arrays里面的asList方法
*/
public void stringAsList() {
String[] arr = {"我", "喜欢", "学习"};
List<String> strings = Arrays.asList(arr);
System.out.println("转换后的数据是:" + strings.toString());
arr[1] = "爱";
System.out.println("转换后修改原来的数组:" + strings.toString());
strings.set(1, "渴望");
System.out.println("转换后的数据在1的位置复制一个字符串:" + strings.toString());
System.out.println("原来数组的值是:");
for (String s : arr) {
System.out.print(s + " ");
}
strings.add("的人");
strings.remove("渴望");
System.out.println("新增后删除的数据:" + strings.toString());
}
}
然后看一下结果:
通过结果可以发现使用基本数据类型的数组转化的时候他吧int[]当成了一个类型(因为指定的类型不能是基本数据类型,但是可以为基本数据的数组,他不会默认转成Integer类型的List),但是使用封装类型就正常使用,但是如果数组修改了list也是跟着修改的,list修改了数据也会被修改,但是如果list想要删除和新增元素那就会报错,因为asList方法生成的ArrayList不是java.util.ArrayList,而是 java.util.Arrays.ArrayList,是Arrays的静态内部类,没有实现List的所有方法,所以很多方法都不可用的。并且转化后的list长度是不可变的。
总结以及建议:
1、如果长度不变可以使用,但是有基本类型就不要使用了。
2、可以使用CollectionUtils的arrayToList方法,支持基本数据类型的数组,但是也是不可新增和删除的。
(CollectionUtils是org.springframework.util.CollectionUtils包下面的哦)
3、使用JDK8的,这个就既支持基本数据类型也支持增删改操作,但是要jdk8哦j或者jdk8以上
int[] intArr = {1, 2, 3};
List<Integer> list = Arrays.stream(intArr).boxed().collect(Collectors.toList());
4、如果没有基本数据类型但是要新增删除就可以使用一下方法:
Integer[] arr = {1, 2, 3};
List<Integer> lists = new ArrayList<>();
Collections.addAll(lists, arr);
5、有基本数据类型还有新增删除就可以自己遍历插入了(回到原始的方法)
int[] intArr = {1, 2, 3};
List<Integer> lists = new ArrayList<>();
for (int i = 0; i < intArr.length; i++) {
lists.add(intArr[i]);
}
以上是我的总结和个人的见解,如果有更好的方法可以加在评论中哦,谢谢!
《………………………………………………菜鸟起飞中,请各位走过路过的多多指教……………………………………》