Arrays.asList():返回指定数组支持的固定大小列表
Posted h-dream
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Arrays.asList():返回指定数组支持的固定大小列表相关的知识,希望对你有一定的参考价值。
Arrays.asList():返回指定数组支持的固定大小列表
首先看下这个方法的源码注释,注意第一句,Returns a fixed-size list backed by the specified array.,
意思就是:返回指定数组支持的固定大小列表
所以:
不能增加和删除元素
细节1
入参为基本类型数组时,返回的List,打印出来是一个对象,size也是1
int[] a_int = {1, 2, 3, 4}; List ints = Arrays.asList(a_int); System.out.println("ints:" + ints);//ints:[[I@5f4da5c3] System.out.println("ints.size:" + ints.size());//ints.size:1
细节2
入参为非基本类型,比如是包装类时,打印正常,size是4。
//这是因为List的泛型不允许是基本类型 Integer[] a_integer = {1, 2, 3, 4}; List<Integer> integers = Arrays.asList(a_integer); System.out.println("integers:" + integers);//integers:[1, 2, 3, 4] System.out.println("integers.size:" + integers.size());//integers.size:4
细节3
List对某个index的值做修改,数组对应的值也修改,说明他俩指向的是同一个地方
Integer[] a_integer = {1, 2, 3, 4}; List<Integer> integers = Arrays.asList(a_integer); integers.set(0, 0); System.out.println(Arrays.asList(a_integer));//[0, 2, 3, 4]
细节4
这样new ArrayList再包一层,list才可以做增加和删除元素的操作
List<String> list1 = new ArrayList<>(Arrays.asList("qqq", "www", "eee")); list1.add("aaa1"); list1.forEach(str -> System.out.println(str));
细节5
这样不包一层,list2就是定长的,不能做增加和删除元素因为Arrays.asList返回的ArrayList不是咱们平时常用的java.util包下的ArrayList,而是Arrays类下的一个静态内部类,恰巧名字也叫ArrayList,由于这个内部类没有重写add和remove方法,所以不能进行增加和删除的操作
List<String> list2 = Arrays.asList("qqq", "www", "eee"); System.out.println(list2.contains("qqq")); list2.add("aaa2");//报错:java.lang.UnsupportedOperationException
总结
Arrays.asList()这个方法,最好不要用于数组转list。
一般适用于初始化一个定长list,并赋值。
比如:
class TestArrays{ private List<String> countrys = Arrays.asList("中国","日本","美国"); public void 你的方法(){ //具体使用 countrys.size(); countrys.get(0); } }
参考来源:https://blog.csdn.net/java_zhangshuai/article/details/95091280
以上是关于Arrays.asList():返回指定数组支持的固定大小列表的主要内容,如果未能解决你的问题,请参考以下文章