java.lang.UnsupportedOperationException异常

本文探讨了使用Java中的Arrays.asList()方法创建列表时遇到的限制,特别是当尝试使用removeAll等方法时会抛出UnsupportedOperationException异常的问题。文章详细解释了原因,并提供了解决方案,即将Arrays.asList()返回的对象转换为ArrayList。
public static void main(String[] args) {
        List<Character> l1 = Arrays.asList('a','b','c','e','h','g','m');
        List<Character> l2 = Arrays.asList('a','l','k','e','p','o','m');
        l1.removeAll(l2);

        System.out.println(l1);

}

使用Arrays.asList()后调用add,remove,removeAll,retainAll这些method时出现java.lang.UnsupportedOperationException异常。这是由于:

Arrays.asList() 返回java.util.Arrays$ArrayList,而不是ArrayList。Arrays$ArrayList和ArrayList都是继承AbstractList,remove,add等method在AbstractList中是默认throwUnsupportedOperationException而且不作任何操作。ArrayList 重写这些method来对list进行操作,但是Arrays$ArrayList没有重写 remove(),add()等,所以throw UnsupportedOperationException。

解决方法是将其转换为ArrayList
List list = Arrays.asList(a[]);
List arrayList = new ArrayList(list);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值