Java中,可以使用Arrays.asList(T... a)方法来把一个数组转换为List,返回一个受指定数组支持的固定大小(注意是固定大小)的列表。此方法同 Collection.toArray()一起,充当了基于数组的 API 与基于 collection 的 API 之间的桥梁。返回的列表是可序列化的,并且实现了 RandomAccess。

此方法还提供了一个创建固定长度的列表的便捷方法,该列表被初始化为包含多个元素:

List<String> stooges = Arrays.asList("Larry", "Moe", "Curly");

当转换后,使用add或者remove方法总是抛出java.lang.UnsupportedOperationException异常。

其底层的实现代码如下:

public static <T> List<T> asList(T... a) {

return new ArrayList<T>(a);

}

创建了一个ArrayList对象,而这个ArrayList并不是java.util包下面的ArrayList,而是java.util.Arrays类中的一个内部类,其实现代码如下:

private static class ArrayList<E> extends AbstractList<E>   implements RandomAccess, java.io.Serializable  {    private static final long serialVersionUID = -2764017481108945198L;

private final E[] a;

ArrayList(E[] array) {

if (array==null)

throw new NullPointerException();

a = array;

}

而这个ArrayList类又继承了AbstractList类,其中的add和remove方法的实现过程又如下:

public void add(int index, E element) {

throw new UnsupportedOperationException();

}

public E remove(int index) {

throw new UnsupportedOperationException();

}

为什么要直接抛出异常呢?注意是固定大小的list 所以就直接抛异常,不让你用

所以,肯定为出现不支持操作的异常。

那么,一种解决办法是把列表再拷贝到ArrayList中就好了。

ArrayList newList = new ArrayList<>(list);就可以使用add()和remove()方法了。

或newList.addAll(list);

数组转换为List(Arrays.asList)后add或remove出现UnsupportedOperationException的更多相关文章

  1. Arrays.asList()后调用add,remove这些method时出现java.lang.UnsupportedOperationException异常

    String[] queryNames = request.getParameterValues("queryName"); List<String> queryNam ...

  2. Arrays.asList基本用法

    目录 说明 基本用法 陷阱 改观 说明 asList 是 java.util.Arrays 类的一个方法 public static <T> List<T> asList(T. ...

  3. Arrays.asList()使用指南

    简介 Arrays.asList()在平时开发中还是比较常见的,我们可以使用它将一个数组转换为一个List集合. String[] myArray = { "Apple", &qu ...

  4. 理解错误的 Arrays.asList()

    简介 Arrays.asList() 作用是将一个数组转换为一个List 集合. String[] myArray = { "Apple", "Banana", ...

  5. Java集合工具类使用的一些坑,Arrays.asList()、Collection.toArray()、foreach

    Arrays.asList() 使用指南 最近使用Arrays.asList()遇到了一些坑,然后在网上看到这篇文章:Java Array to List Examples 感觉挺不错的,但是还不是特 ...

  6. Arrays.asList()注意

    api: public static <T> List<T> asList(T... a) 返回一个受指定数组支持的固定大小的列表.(对返回列表的更改会“直接写”到数组.)此方 ...

  7. 【Java基础】一个有意思的泛型方法Arrays.asList(T... a)

    总结 利用Arrays.asList方法返回的List是不允许add和remove的,这种list的长度不可变,因为底层依然是写数组. Arrays.asList的返回值是调用是传入T类型的List, ...

  8. 【Java必修课】好用的Arrays.asList也有这三个坑

    好用的asList 在开发或写测试用例的过程中,经常会用到Arrays.asList()这个方法,可以快速方便地将数组转化成一个List.例如: List<String> list = A ...

  9. Arrays.asList的那点事

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

随机推荐

  1. Mysql数据库每天定时执行备份方法

    此数据库备份方法是简单的数据库备份方法,就是从Mysql的数据文件下,将数据库文件拷贝到指定的文件夹目录下 1.创建txt文件,添加脚本 net stop mysql xcopy D:\MySql\D ...

  2. 1-spring boot 入门

    我从08年到现在,毕业马山就10年了,一直从事.net平台开发工作(期间应该有1年时间从事java开发). 一.为什么要转java: 1.目前市场很多招聘java架构师的职位,且薪资都不错,但.net ...

  3. Filter笔记

    1.Filter [1] Filter简介 > Filter翻译为中文是过滤器的意思. > Filter是JavaWeb的三大web组件之一:Servlet.Filter.Listener ...

  4. 2019-1-18 Spark 机器学习

    2019-1-18 Spark 机器学习 机器学习 模MLib板 预测 //有视频 后续会补充 1547822490122.jpg 1547822525716.jpg 1547822330358.jp ...

  5. Java+Selenium自动化对非输入框的日历或日期控件的处理

    如图:          1.问题描述: 在应用selenium实现web自动化时,经常会遇到处理日期控件点击问题,手工很简单,可以一个个点击日期控件选择需要的日期,但自动化执行过程中,完全复制手工这 ...

  6. ubuntu安装qq、微信

    非让用企业微信,于是,,我屈服了 https://www.coder4.com/archives/6241 https://github.com/wszqkzqk/deepin-wine-ubuntu

  7. Linux 第十六天

    十六.服务管理 1.服务分类 1)RPM包默认安装的服务:包括独立的服务.基于xinetd的服务 2)源码包安装的服务 3)RPM安装服务和源码包安装服务的区别就是安装位置的不同 >源码包安装在 ...

  8. 高级查询query

    详细看 https://www.kancloud.cn/ldkt/tp5_db/229042

  9. HTML之二 -特殊标签 与数据交互标签

    1.<img>  标签 © <h1> <img src="1.jpg" width="200" height="200& ...

  10. java环境下载

    https://repo.huaweicloud.com/java/jdk/8u201-b09/