java中的asList_Java中的Arrays.asList()方法
Arrays.asList()返回一个List,但是这种情况下,其底层的实现是一个final数组,因此不能调整其尺寸
如下代码片段:
package chapter11.t1;
import java.util.*;
public class AddingGroups {
public static void main(String[] args) {
List list = Arrays.asList(1,2,3,4,5);
list.add(6);
}
}
通过Arrays.asList()生成list对象,然后再向list中添加元素6,程序报错如下:
Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.AbstractList.add(AbstractList.java:148)
at java.util.AbstractList.add(AbstractList.java:108)
at chapter11.t1.AddingGroups.main(AddingGroups.java:8)
看下Arrays类的源码如下:
asList()方法返回一个内部类ArrayList的对象
public static List asList(T... a) {
return new ArrayList<>(a);
}
下面看下Arrays类中的ArrayList内部类的源码:
private static class ArrayList extends AbstractList
implements RandomAccess, java.io.Serializable
{
private static final long serialVersionUID = -2764017481108945198L;
private final E[] a;
ArrayList(E[] array) {
a = Objects.requireNonNull(array);
}
@Override
public int size() {
return a.length;
}
@Override
public Object[] toArray() {
return a.clone();
}
@Override
@SuppressWarnings("unchecked")
public 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;
}
@Override
public E get(int index) {
return a[index];
}
@Override
public E set(int index, E element) {
E oldValue = a[index];
a[index] = element;
return oldValue;
}
@Override
public 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;
}
@Override
public boolean contains(Object o) {
return indexOf(o) != -1;
}
@Override
public Spliterator spliterator() {
return Spliterators.spliterator(a, Spliterator.ORDERED);
}
@Override
public void forEach(Consumer super E> action) {
Objects.requireNonNull(action);
for (E e : a) {
action.accept(e);
}
}
@Override
public void replaceAll(UnaryOperator operator) {
Objects.requireNonNull(operator);
E[] a = this.a;
for (int i = 0; i < a.length; i++) {
a[i] = operator.apply(a[i]);
}
}
@Override
public void sort(Comparator super E> c) {
Arrays.sort(a, c);
}
}
该内部类的构造方法如下:
ArrayList(E[] array) {
a = Objects.requireNonNull(array);
}
也就是说Arrays.asList()返回一个final数组,因此不可以改变次数组的大小。当我们试图用add()或delete()方法在这种列表中添加或删除元素的时候,会引发数组尺寸的改变。因此在运行时会抛java.lang.UnsupportedOperationException不支持的操作这样的异常。
java中的asList_Java中的Arrays.asList()方法相关推荐
- java中的asList_java中的Arrays.asList()浅析
1.Arrays.asList(T..)使用的是静态内部类:ArrayList, (没有定义add和remove等一些方法),而不是java.util.ArrayList /** * 1.测试Arra ...
- java中的asList_java中Arrays.asList的使用
Arrays.asList()方法的作用是将数组或一些元素转为集合,而你得到的集合并不是我们通常使用的List集合,而是Arrays里面的一个内部类.阿里的开发手册上java开发规范说到使用工具类Ar ...
- java 集合数组初始化_Java用Arrays.asList初始化ArrayList实例方法
Java用Arrays.asList初始化ArrayList实例方法 发布于 2020-2-29| 复制链接 在本篇文章里小妖给大家分享的是关于Java中使用Arrays.asList初始化Array ...
- Java Arrays.asList()方法详解
本文是对Arrays.asList()方法从源码角度进行分析,解析使用中的一些困惑. 首先看Arrays.asList()的源码 public static <T> List<T&g ...
- 【java】数组转list用arrays.aslist报错
现象: 数组转List用arrays.asList方法,只能用于获取数组长度,不能从转成的List中使用add和remove方法 报错:java.lang.UnsupportedOperationEx ...
- 浅谈Arrays.asList()方法
一.引言: 实际操作中,我们会遇到需要将数组转化为list的情况,这个时候我们可以借助Java的Arrays类的方法进行便捷操作,接下来来看以下操作的例子: Integer[] arr= {1, 2, ...
- 浅谈Arrays.asList()方法的使用
浅谈Arrays.asList()方法的使用 首先,该方法是将数组转化为list.有以下几点需要注意: (1)该方法不适用于基本数据类型(byte,short,int,long,float,doubl ...
- java arrays.aslist()_Java中Arrays.asList()方法详解及实例
Arrays.asList() 是将数组作为列表. 问题来源于: public class Test { public static void main(String[] args) { int[] ...
- Arrays.asList方法总结
作用 : Arrays.asList() 将一个数组转化为一个List对象,这个方法会返回一个ArrayList类型的对象, 这个ArrayList类并非java.util.ArrayList类,而是 ...
最新文章
- ECLIPSE配置MAVEN
- 【软件测试】4、测试用例的设计
- 【传智播客】Javaweb程序设计任务教程 黑马程序员 第四章 课后答案
- mysql默认数据库名称,默认的MySQL数据库名称
- 2017年游戏营收报告公布,谁是去年最大的赢家?
- 软件配置管理(六)常用配置软件配置工具指令
- iOS开发UI篇—实现一个私人通讯录小应用(一)
- 通俗的说这是一个一对多的例子,看看人家是怎么做的!
- 2019年春季学习第七周学习总结
- matlab画漫画,震惊!无聊男子竟用函数画出可爱的卡通猫
- PS修皮肤去痘痘毛孔,只需要掌握这个技巧就够了
- 从苏炳添的学术论文中,看看如何写论文
- PX4 FMU [17] stabilize
- python 多线程内子线程结束后执行主线程
- 女生可以做软件测试吗?
- 塔夫斯大学计算机专业,塔夫茨大学优势专业
- Python有参函数和无参函数实例
- python网络编程学什么_python网络编程学习《一》
- 简单说说 OSChina 的技术架构
- 无聊的小明来数1 (5 分)...按位与
热门文章
- centos7 安装git_Centos7.4 Yapi 服务搭建
- 重庆大学 计算机组成原理,重庆大学计算机组成原理集(含部分)解决方案.doc
- hive sql 怎么实现循环_Hive存储过程实现-hpsql
- 【转】事务和锁机制是什么关系? 开启事务就自动加锁了吗?
- 【转】RocketMQ的一些特性(生产者消费者配置参数的含义)
- MVC和WebForm区别
- Windows Workflow Foundation(WWF)介绍
- 一步步编写操作系统 59 cpu的IO特权级1
- 查看linux不显示ip,linux系统查看IP地址,不显示IP地址或者只显示127.0.0.1
- android 加载网络bitmap图片 oom 简书_Android常见问题--ImageView加载图片OOM