Arrays.asList 分析

本文探讨了在Java中使用Arrays.asList()方法时遇到的问题,特别是当尝试从由该方法创建的列表中移除元素时所引发的UnsupportedOperationException异常。通过示例代码详细解释了这一现象背后的原因。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题 一:

代码如下:

    int [] arr = new int[5];
    arr[0]=1;
    arr[1]=2;
    arr[2]=3;
    arr[3]=4;
    arr[4]=5;
    List<int[]> list  =  Arrays.asList(arr);
    list.remove(0);

运行后 :

Exception in thread "main" java.lang.UnsupportedOperationException
	at java.util.AbstractList.remove(AbstractList.java:144)
	at test.testArr23.main(testArr23.java:18)

原因分析

Arrays.asList 返回的List类型为 Arrays 的内部类的类型 : private static class ArrayList<E> extends AbstractList<E>
只是 最简 实现的接口和抽象类,导致
AbstractList<E> 中未抽象方法  抛出异常<span style="font-family: Arial, Helvetica, sans-serif;">UnsupportedOperationException</span>.
类似如下:
<pre name="code" class="html">  public E set(int index, E element) {
<span style="white-space:pre">	</span>throw new UnsupportedOperationException();
    }


 
    public void add(int index, E element) {
<span style="white-space:pre">	</span>throw new UnsupportedOperationException();
    }
    public E remove(int index) {
<span style="white-space:pre">	</span>throw new UnsupportedOperationException();
    }
</pre><pre name="code" class="html">问题 一:
代码如下:  
int[] arr = new int[5];
        arr[0] = 1;
        arr[1] = 2;
        arr[2] = 3;
        arr[3] = 4;
        arr[4] = 5;
        String[] strArr = new String[3];
        strArr[0] = "11";
        strArr[1] = "22";
        strArr[2] = "33";
<h2>       <span style="font-family:SimHei;"> List<String> strlist = Arrays.asList(strArr);
        List<int[]> arrlist = Arrays.asList(arr);
</span><span style="font-family:SimHei;">      </span></h2>        for (String j : strlist)
        {
            System.out.println(j);
        }


        for (int j : arrlist.get(0))
        {
            System.out.println(j);
        }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值