Arrays.asList详解
记得以前写过一段这样的代码:
List l = Arrays.asList(arr);
l.add("d");
自以为没有错误,结果运行下来就让系统crash掉了,后来仔细的看了下源代码,发现asList不是我想象的那么简单,1.4.2中的asList代码如下:
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方法,代码一目了然了
throw new UnsupportedOperationException();
}
所以只能新建一个list来保存asList的返回结果,如果想做插入的话。
转载于:https://www.cnblogs.com/hashmap/archive/2007/09/04/2162444.html
Arrays.asList详解相关推荐
- Arrays.asList() 详解
[1. 要点] 该方法是将数组转化成List集合的方法. List list = Arrays.asList("a","b","c"); 注 ...
- Arrays.asList详解和示例
注意 (1)该方法适用于对象型数据的数组(String.Integer-) (2)该方法不建议使用于基本数据类型的数组(byte,short,int,long,float,double,boolean ...
- 数组截取方法-Arrays.copyOfRange()详解
Arrays.copyOfRange(); public static <T> T[] copyOfRange(T[] original, int from, int to) {retur ...
- java arrays.aslist()_Java中Arrays.asList()方法详解及实例
Arrays.asList() 是将数组作为列表. 问题来源于: public class Test { public static void main(String[] args) { int[] ...
- Java Arrays.asList()方法详解
本文是对Arrays.asList()方法从源码角度进行分析,解析使用中的一些困惑. 首先看Arrays.asList()的源码 public static <T> List<T&g ...
- java的数组与Arrays类源码详解
java的数组与Arrays类源码详解 java.util.Arrays 类是 JDK 提供的一个工具类,用来处理数组的各种方法,而且每个方法基本上都是静态方法,能直接通过类名Arrays调用. 类的 ...
- Arrays类常用方法详解
Java-Arrays类常用方法详解 一.Arrays类的定义 Arrays类位于 java.util 包中,主要包含了操纵数组的各种方法二.Arrays类的常用方法 1.Arrays.asList( ...
- java多维数组的反射类型_Java多维数组和Arrays类方法总结详解
一.数组的三种声明方式总结 public class WhatEver { public static void main(String[] args) { //第一种 例: String[] tes ...
- Arrays.copyOf()方法详解-jdk1.8
2019独角兽企业重金招聘Python工程师标准>>> public static <T,U> T[] copyOf(U[] original, int newLengt ...
最新文章
- 关于面试,我也有说的
- Python--粒子滤波定位案例程序
- [9月29日的脚本] 枚举SharePoint列表(PowerShell)
- 一张图看懂云栖大会·上海峰会重磅产品发布
- 【python教程入门学习】Python 正则表达式
- 一加7 Pro高清渲染图曝光:A+屏幕 超棒手感
- WebMaster如何处理网站内容重复?
- java反射创建实例_Java反射创建实例
- python get请求带参数_python_request的安装及模拟json的post请求及带参数的get请求
- freebsd安装linux网卡驱动,FreeBSD安装后的网卡配置
- rust投递箱连接箱子_海门市围板箱定制围板箱内衬
- Discuz!NT 系统架构分析(以前的)
- tcpip详解卷一第3章(1)
- 如何使用Teamtoken工具软件做员工股权激励
- Arduino与Proteus仿真实例-AD5242数字电位器驱动仿真
- gmap mysql cachet_百度谷歌离线地图解决方案(离线地图下载)
- android模拟器mac版本下载,TapTap安卓模拟器for Mac-TapTap模拟器Mac版下载 V1.8.3-PC6苹果网...
- 爬虫网页框架代码和媒体对象
- Navicat连接mysql时出现 Access denied for user ‘root‘@‘xxx.xxx.xxx.xxx‘ (using password: YES) 的原因及解决办法。
- 如何提交项目到git