java基础 --- 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);
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值