中关村在线

软件

Arrays.asList移除异常解决方案

Arrays.asList(T... a)方法返回的List实际上是java.util.Arrays.ArrayList的一个实例,该类继承自java.util.AbstractList,并未独立实现java.util.List接口。由于其父类AbstractList中定义了remove等操作方法,因此该列表支持删除操作,但该实现具有局限性,底层基于传入的数组,不支持结构性修改,调用remove可能抛出UnsupportedOperationException。

1、 调用Arrays.asList生成的列表执行remove操作时,会抛出异常,因为该列表不支持修改操作。

2、 报错代码段

3、 }

4、 }

5、 通过将Arrays.asList(T... a)生成的List作为参数传递给新的java.util.ArrayList构造函数,即可轻松解决该问题。

6、 代码:

7、 }

8、 }

9、 原因剖析

10、 java.util.Arrays.ArrayList与java.util.ArrayList所实现的接口存在差异,前者不支持增删操作,后者是完整实现List接口的可变列表。

11、 ArrayList 是 List 接口的一个实现类,用于存储有序可重复的元素集合。

12、 java.util.Arrays.ArrayList类所继承的AbstractList中的remove方法并未实现List接口中定义的删除操作逻辑,导致调用该方法时会抛出不支持操作异常,无法正常执行元素移除功能。

13、 java.util.Arrays.ArrayList 实现了 List、RandomAccess、Serializable 和 Cloneable 接口。

14、 在java.util.AbstractList抽象类中,remove方法的默认实现会直接抛出UnsupportedOperationException异常。

15、 代码原稿

16、 }

17、 ArrayList 实现了 List 接口,支持动态数组操作。

18、 ArrayList的remove方法通过索引移除元素,后续元素前移,大小减一,并返回被移除的元素。

展开全文
人赞过该文
内容纠错

相关电商优惠

评论

更多评论
还没有人评论~ 快来抢沙发吧~

读过此文的还读过

点击加载更多

内容相关产品

说点什么吧~ 0

发评论,赚金豆

收藏 0 分享
首页查报价问答论坛下载手机笔记本游戏硬件数码影音家用电器办公打印 更多

更多频道

频道导航
辅助工具