Arrays.asList () 不可添加或删除元素的原因
2024-10-16 06:12:42
Java中奖数组转换为List<T>容器有一个很方便的方法 Arrays.asList(T ... a),我通过此方法给容器进行了赋值操作,接着对其进行 添加元素,却发现会抛出一个(java.lang.UnsupportedOperationException)异常。
看了一下源码:
public static <T> List<T> asList(T... a) {
return new ArrayList<T>(a);
}
定位到 ArrayList 内中,发现其实Arrays 的内部类,并且继承了AbstractList 类(abstract 类), 但并没有覆写 add() 方法,而是直接继承的。 查看 AbstractList 源码发现,其很多方法都要求在子类中进行覆写的,如果只继承的话,那么调用这些方法就会抛出一个异常。
// AbstractList 中实现的 add 方法
public boolean add(E e) {
add(size(), e);
return true;
} public void add(int index, E element) {
throw new UnsupportedOperationException();
} 如上,如果 在子类中单单是继承的话,调用add 方法就会抛出异常
结论: 通过Arrays.asList(T ... a) 方法初始化List 容器,该容器的长度是不可改变的。所以如果你要是想在你的容器中添加或者删除元素的话,还是使用 LinkedList () 【快插入 ,快删除】 或者 ArrayList() 【快查询】。
最新文章
- ContentProvider域名替换小工具
- Oracle协议适配器错误解决办法
- ASP.NET中的随机密码生成
- git 删除远程源,新增加源
- LevelDB系列之SSTable(Sorted Strings Table)文件
- EasyUI 兼容 IE6 方法总结
- 智捷公开课马上开始了-欢迎大家一起讨论学习-第一系列读《Swift开发指南(修订版) 》看Swift视频教程
- Logback日志使用详解
- oracle强化练习之分组函数
- bnu 34982 Beautiful Garden(暴力)
- HTML <;form>; 标签的 enctype 属性
- excel中VBA的使用
- Redis-aof持久化
- PCI-E配置MSI中断流程解析
- mathJax基础语法-0基础开始,(这是网上抄来的如果有权限和版权问题联系本人处理,仅供学术参考)
- IT行业中文资源网址集绵
- mvc route .html 后缀 404
- JavaScript Json(转)
- ORM 多表操作查询及增删改查
- 洛谷P1501 Tree II
热门文章
- JAVA基础第一组(前5道题)
- 201521123073《Java程序设计》第4周学习总结
- 201521123070 《JAVA程序设计》第4周学习总结
- 201521123097《Java程序设计》第十周学习总结
- java web:在eclipse中如何创建java web 项目
- Hibernate逆向工程【PowerDesigner、idea环境下】
- python import xxx 与 from xxx import xx 模块引入的区别
- JDK8-废弃永久代(PermGen)迎来元空间(Metaspace)
- Opengl4.5 中文手册—G
- 我的第一个python web开发框架(2)——一个简单的小外包