zoukankan      html  css  js  c++  java
  • 数组和list的转化注意点

    Arrays.asList方法返回的ArrayList是继承自AbstractList同时实现了RandomAccess和Serializable接口,定义如下:  

     private static class ArrayList<E> extends AbstractList<E>  
     implements RandomAccess, java.io.Serializable 

    然后我们进一步看看AbstractList这个类的定义:  

     public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E> 

    这时我们发现AbstractList这个类的set() add() remove()方法定义如下:

        public void add(int index, E element) {
            throw new UnsupportedOperationException();
        }
    
        public E set(int index, E element) {
            throw new UnsupportedOperationException();
        }
    
        public E remove(int index) {
            throw new UnsupportedOperationException();
        }

    现在知道了通过这种方式转化后的list使用这三个方法throw UnsupportedOperationException异常的原因了。  

    通过上面的分析,我们知道,其实通过asList方法得到的List是只读的,那么平时我们怎样避免这样的错误发生?我们可以采用如下方法:  

        List<Integer> list = new ArrayList<>(Arrays.asList(数组));

    通过new一个新的对象的方式,避开转化后只读的现象。能够正常的使用上述三种方法。

  • 相关阅读:
    牛式个数
    查找矩阵中某一元素
    破碎的项链
    找鞍点
    方阵形对角矩阵
    间接寻址
    Oracle安装配置的一些备忘点
    通过二维码在Windows、macOS、Linux桌面和移动设备之间传输文件
    httpd连接php-fpm
    nginx反代+lamp+MySQL主从同步的简单实现
  • 原文地址:https://www.cnblogs.com/xiaoxiaochengxuyuan/p/5630717.html
Copyright © 2011-2022 走看看