【java】数组转list用arrays.aslist报错
现象:
数组转List用arrays.asList方法,只能用于获取数组长度,不能从转成的List中使用add和remove方法
报错:java.lang.UnsupportedOperationException
解决办法:
将数组元素遍历add添加到list中
原因:
1.这里只返回长度大小
2.这个ArrayList并不是我们经常使用到的List<String> a = new ArrayList<String>();中的ArrayList,这个ArrayList是Arrays里面一个静态内部私有类。
3.在代码中,已经表明,这个方法没有add和remove方法。
/*** Returns a fixed-size list backed by the specified array. (Changes to* the returned list "write through" to the array.) This method acts* as bridge between array-based and collection-based APIs, in* combination with {@link Collection#toArray}. The returned list is* serializable and implements {@link RandomAccess}.** <p>This method also provides a convenient way to create a fixed-size* list initialized to contain several elements:* <pre>* List<String> stooges = Arrays.asList("Larry", "Moe", "Curly");* </pre>** @param <T> the class of the objects in the array* @param a the array by which the list will be backed* @return a list view of the specified array*/@SafeVarargs@SuppressWarnings("varargs")public static <T> List<T> asList(T... a) {return new ArrayList<>(a);}
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) {a = Objects.requireNonNull(array);}@Overridepublic int size() {return a.length;}@Overridepublic Object[] toArray() {return a.clone();}@Override@SuppressWarnings("unchecked")public <T> T[] toArray(T[] a) {int size = size();if (a.length < size)return Arrays.copyOf(this.a, size,(Class<? extends T[]>) a.getClass());System.arraycopy(this.a, 0, a, 0, size);if (a.length > size)a[size] = null;return a;}@Overridepublic E get(int index) {return a[index];}@Overridepublic E set(int index, E element) {E oldValue = a[index];a[index] = element;return oldValue;}@Overridepublic int indexOf(Object o) {E[] a = this.a;if (o == null) {for (int i = 0; i < a.length; i++)if (a[i] == null)return i;} else {for (int i = 0; i < a.length; i++)if (o.equals(a[i]))return i;}return -1;}@Overridepublic boolean contains(Object o) {return indexOf(o) != -1;}@Overridepublic Spliterator<E> spliterator() {return Spliterators.spliterator(a, Spliterator.ORDERED);}@Overridepublic void forEach(Consumer<? super E> action) {Objects.requireNonNull(action);for (E e : a) {action.accept(e);}}@Overridepublic void replaceAll(UnaryOperator<E> operator) {Objects.requireNonNull(operator);E[] a = this.a;for (int i = 0; i < a.length; i++) {a[i] = operator.apply(a[i]);}}@Overridepublic void sort(Comparator<? super E> c) {Arrays.sort(a, c);}}
参考:https://jingyan.baidu.com/article/0eb457e53e219d03f1a905e7.html
【java】数组转list用arrays.aslist报错相关推荐
- JAVA三种数组转链表的方式 适用环境 Arrays.asList报错java.lang.UnsupportedOperationException
1.Arrays.asList 适用于Long.Integer.String等类型 不适用于基础类型long int 等 而且转变的List长度固定 无法实现添加.删除操作 Integer[] x = ...
- Java数组转集合之Arrays.asList()用法
Arrays.asList()用法 使用Arrays.asList()的原因无非是想将数组或一些元素转为集合,而你得到的集合并不一定是你想要的那个集合. 而一开始asList的设计时用于打印数组而设计 ...
- js 如何将java list集合转换成var类型数组_零基础参加郑州Java培训 一定要注意Arrays.asList的用法...
作为编程界的老大哥,Java一直是想要加入互联网行业的人的首选.为了能够更快更好地入行,很多零基础学员选择参加郑州Java培训班,跟着老师的脚步由浅入深的学习专业技术.今天千锋郑州小编就给大家分享使用 ...
- 数组转集合问题Arrays.asList()
数组转集合问题Arrays.asList() 1. 源码: Arrays.class public static <T> List<T> asList(T... a) {//A ...
- 将数组转换成集合Arrays.asList,不可进行add和remove操作的原因
直接上代码: import java.util.Arrays; import java.util.List;public class Test {public static void main(Str ...
- %@ taglib prefix=c uri=http://java.sun.com/jsp/jstl/core %会报错
有些时候,<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>会报错,错 ...
- java 关闭 tomcat,每次关闭TOMCAT就报错 不知道什么?该如何处理
当前位置:我的异常网» Java Web开发 » 每次关闭TOMCAT就报错 不知道什么?该如何处理 每次关闭TOMCAT就报错 不知道什么?该如何处理 www.myexceptions.net 网 ...
- 记一次Java代码不执行,也不报错!求大佬赐教!
记一次Java代码不执行,也不报错!求大佬赐教! 发生背景 问题所在 发生背景 实训在做串口通讯的时候,进行数据处理时,代码执行一部分,有一部分没有执行. 十分纳闷,代码如下: /*** 处理返回结果 ...
- SpringBoot项目在eclipse中能运行,部署到服务器 nohup java -jar 方式运行就无法显示报错
SpringBoot项目在eclipse中能运行,部署到服务器 nohup java -jar 方式运行就无法显示报错: *************************** APPLICATION ...
最新文章
- MongoDB 计划缓存的影响
- Linux系统安全工具tcpdump用法
- centos 7 yum 安装 MongoDB 4.2
- require(),include(),require_once()和include_once()的异同
- HDU 4609——3-idiots
- 代码整洁之道--思维导图
- python樱花制作教程视频_大型Python视频资料,阿里巴巴推荐,用Python画一棵漂亮的樱花树...
- oracle 合并函数
- 9206-1118-周三 猜拳小游戏一次性版本
- python队列实现_Python 数据结构之队列的实现
- # Kinect V2 简介
- 探究CSS3中的transition和transform属性方法使用
- 5月6阴阳师服务器维护,《阴阳师》手游5月6日维护更新公告
- php获取服务器运行时间差,解决php服务器时间差异
- 如何解释反向代理与正向代理
- BootLoader这个玩意
- 源代码静态检测分析技术浅析
- 大通流TVS管和ESD静电二极管的区别
- 郊区春游(NC16122)状压dp
- PHP获取系统时间的方法(毫秒数)