记得以前写过一段这样的代码:

String[] arr=...{"a","b","c"};
List l = Arrays.asList(arr);
l.add("d");

自以为没有错误,结果运行下来就让系统crash掉了,后来仔细的看了下源代码,发现asList不是我想象的那么简单,1.4.2中的asList代码如下:

public static List asList(Object[] a) ...{
    return new ArrayList(a);
    }

    /** *//**
     * @serial include
     */
    private static class ArrayList extends AbstractList
               implements RandomAccess, java.io.Serializable
    ...{
        private static final long serialVersionUID = -2764017481108945198L;
    private Object[] a;

    ArrayList(Object[] array) ...{
            if (array==null)
                throw new NullPointerException();
        a = array;
    }

    public int size() ...{
        return a.length;
    }

    public Object[] toArray() ...{
        return (Object[]) a.clone();
    }

    public Object get(int index) ...{
        return a[index];
    }

    public Object set(int index, Object element) ...{
        Object oldValue = a[index];
        a[index] = element;
        return oldValue;
    }

        public int indexOf(Object o) ...{
            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;
        }

        public boolean contains(Object o) ...{
            return indexOf(o) != -1;
        }
    }

这个ArrayList是Arrays的内部类,可不要看成是java.util.ArrayList,从方法来看只是一个只读的数组,并没有扩展add等添加的方法,那么我刚才调用的add实际上是AbstractList中的add方法,代码一目了然了

 public void add(int index, Object element) ...{
    throw new UnsupportedOperationException();
    }

所以只能新建一个list来保存asList的返回结果,如果想做插入的话。

转载于:https://www.cnblogs.com/hashmap/archive/2007/09/04/2162444.html

Arrays.asList详解相关推荐

  1. Arrays.asList() 详解

    [1. 要点] 该方法是将数组转化成List集合的方法. List list = Arrays.asList("a","b","c"); 注 ...

  2. Arrays.asList详解和示例

    注意 (1)该方法适用于对象型数据的数组(String.Integer-) (2)该方法不建议使用于基本数据类型的数组(byte,short,int,long,float,double,boolean ...

  3. 数组截取方法-Arrays.copyOfRange()详解

    Arrays.copyOfRange(); public static <T> T[] copyOfRange(T[] original, int from, int to) {retur ...

  4. java arrays.aslist()_Java中Arrays.asList()方法详解及实例

    Arrays.asList() 是将数组作为列表. 问题来源于: public class Test { public static void main(String[] args) { int[] ...

  5. Java Arrays.asList()方法详解

    本文是对Arrays.asList()方法从源码角度进行分析,解析使用中的一些困惑. 首先看Arrays.asList()的源码 public static <T> List<T&g ...

  6. java的数组与Arrays类源码详解

    java的数组与Arrays类源码详解 java.util.Arrays 类是 JDK 提供的一个工具类,用来处理数组的各种方法,而且每个方法基本上都是静态方法,能直接通过类名Arrays调用. 类的 ...

  7. Arrays类常用方法详解

    Java-Arrays类常用方法详解 一.Arrays类的定义 Arrays类位于 java.util 包中,主要包含了操纵数组的各种方法二.Arrays类的常用方法 1.Arrays.asList( ...

  8. java多维数组的反射类型_Java多维数组和Arrays类方法总结详解

    一.数组的三种声明方式总结 public class WhatEver { public static void main(String[] args) { //第一种 例: String[] tes ...

  9. Arrays.copyOf()方法详解-jdk1.8

    2019独角兽企业重金招聘Python工程师标准>>> public static <T,U> T[] copyOf(U[] original, int newLengt ...

最新文章

  1. 关于面试,我也有说的
  2. Python--粒子滤波定位案例程序
  3. [9月29日的脚本] 枚举SharePoint列表(PowerShell)
  4. 一张图看懂云栖大会·上海峰会重磅产品发布
  5. 【python教程入门学习】Python 正则表达式
  6. 一加7 Pro高清渲染图曝光:A+屏幕 超棒手感
  7. WebMaster如何处理网站内容重复?
  8. java反射创建实例_Java反射创建实例
  9. python get请求带参数_python_request的安装及模拟json的post请求及带参数的get请求
  10. freebsd安装linux网卡驱动,FreeBSD安装后的网卡配置
  11. rust投递箱连接箱子_海门市围板箱定制围板箱内衬
  12. Discuz!NT 系统架构分析(以前的)
  13. tcpip详解卷一第3章(1)
  14. 如何使用Teamtoken工具软件做员工股权激励
  15. Arduino与Proteus仿真实例-AD5242数字电位器驱动仿真
  16. gmap mysql cachet_百度谷歌离线地图解决方案(离线地图下载)
  17. android模拟器mac版本下载,TapTap安卓模拟器for Mac-TapTap模拟器Mac版下载 V1.8.3-PC6苹果网...
  18. 爬虫网页框架代码和媒体对象
  19. Navicat连接mysql时出现 Access denied for user ‘root‘@‘xxx.xxx.xxx.xxx‘ (using password: YES) 的原因及解决办法。
  20. 如何提交项目到git

热门文章

  1. 21天的你长这样?剑桥博士小姐姐研究「人造胚胎」,2篇Nature到手
  2. 第三节:Windows平台部署Asp.Net Core应用(基于IIS和Windows服务两种模式)
  3. CAS(compareAndSwap)原理
  4. 知识库的构建 5-3 马尔科夫逻辑 Markov logic
  5. Java泛型编程基础
  6. java之集合框架一Collection接口
  7. java-Java可以对方法进行序列化?
  8. Matlab2012a下配置LibSVM—3.18
  9. Javascript cookie使用详解
  10. iptables从入门到精通