Arrays.asList()

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;


public class SimpleArrays {
public static void main(String[] args) {

String[] string = new String[] { "111", "222", "333" };
List<String> list =Arrays.asList(string);;
list.add("444");
System.out.println(list);
}


}

这样必然会报错

Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.AbstractList.add(AbstractList.java:148)
at java.util.AbstractList.add(AbstractList.java:108)
at SimpleArrays.main(SimpleArrays.java:16)



正确的写法应该这样

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;


public class SimpleArrays {
public static void main(String[] args) {

String[] string = new String[] { "111", "222", "333" };
List<String> list =new ArrayList<String>(Arrays.asList(string));
list.add("444");
System.out.println(list);
}


}

完美运行

[111, 222, 333, 444]


Arrays.asList方法是Java中的一个工具方法,它将传入的参数转换为一个固定长度的List集合。 这个方法接受一个可变参数,即任意数量的对象,并返回一个包含这些对象的List。 这个方法的作用是可以将数组或其他可迭代对象转换为List对象,方便进行操作和使用。 需要注意的是,返回的List是一个固定长度的List,也就是说不能进行增删元素的操作。这是因为asList方法返回的List实际上是Arrays类中的一个内部类Arrays.ArrayList,而不是java.util包中的ArrayList类。 这个内部类继承自AbstractList类,虽然具有List接口的一些方法,但是并没有实现增删元素的方法,所以无法进行增删操作。如果需要对返回的List进行增删操作,可以将其转换为ArrayList,例如通过new ArrayList<>(Arrays.asList(...))的方式进行转换。 此外,需要注意的是,asList方法返回的List是一个固定长度的List,即不能改变其长度。如果进行了增删元素的操作,可能会导致不可预知的结果。所以在使用asList方法时,需要注意不要对返回的List进行增删操作,或者在需要增删操作时将其转换为ArrayList来操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Arrays.asList() 详解](https://blog.csdn.net/kzadmxz/article/details/80394351)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值