xml地图|网站地图|网站标签 [设为首页] [加入收藏]

UnsupportedOperationException异常

想把八个字符串先切割为字符串数组,然后将数组转为ArrayList,可是在后边调用ArrayList的add方法时,却抛卓殊了。代码如下:

三个数组转成list,调用removeadd方法报 UnsupportedOperationException,样比如下:

UnsupportedOperationException异常

public static void main(String[] args) { String str = "A,B,C,D,E"; String arr[] = str.split; List<String> arrList = Arrays.asList; arrList.add; System.out.println("arrList:"+StringUtils.join(arrList,",")); }
import java.util.Arrays;
import java.util.List;
/**
 * @author lfg1991@qq.com
 * @create 2017-04-27 13:53
 **/
public class ArraysDemo {
    public static void main(String[] args) {
        String[] str = {"5", "7", "8"};

        List list = Arrays.asList(str);
        list.remove(0); //UnsupportedOperationException

        System.out.println(list);
        System.out.println(Arrays.toString(str));
    }
}

出现

在调用 Arrays.asList(卡塔尔国 方法时把贰个数组转产生 List 列表时,对获取的 List列表进行add(卡塔尔(قطر‎ 和 remove(State of Qatar 操作时现身 java.lang.UnsupportedOperationException 分外。把数组转变为 List 的操作代码如下

String[] stringArray = ResourcesUtils.getStringArray(R.array.home_channel);
List<String> stringList = Arrays.asList(stringArray);
stringList.remove(0)

运营代码现身如下格外:

Caused by: java.lang.UnsupportedOperationException

十一分消息:

Exception in thread "main" java.lang.UnsupportedOperationException
at java.util.AbstractList.remove(AbstractList.java:161)
at me.douwo.ArraysDemo.main(ArraysDemo.java:18)

为何

java.lang.UnsupportedOperationException 是指诉求的章程不被支持的那叁个。在从 Arrays.asList(卡塔尔国 转变过来的 List 的不匡助 add(卡塔尔国 和 remove(卡塔尔国 方法,这是由于从 Arrays.asList(State of Qatar 再次回到的是回来 java.util.Arrays$ArrayList ,并非ArrayList。Arrays$ArrayList和ArrayList 都以持续 AbstractList,add(卡塔尔国和remove(卡塔尔(قطر‎等措施在AbstractList中暗中同意 throw UnsupportedOperationException 而不做其余操作。ArrayList 重写这几个主意对 List 进行操作,而 Arrays$ArrayList 却未有重写 add(卡塔尔 和 remove(卡塔尔国 等办法,所以对从 Arrays.asList(卡塔尔 转变过来的 List 举行 add(卡塔尔(قطر‎ 和 remove(卡塔尔国 会出现UnsupportedOperationException 十分。

一句话:使用 Arrays.asList(卡塔尔(قطر‎ 格局转将数组转变为的汇集,是不足被改成

Exception in thread "main" java.lang.UnsupportedOperationException at java.util.AbstractList.add(AbstractList.java:148) at java.util.AbstractList.add(AbstractList.java:108)

缘由: Arrays内部有个静态ArrayList类世襲了AbstractList,然则并未重写 add、remove 方法,Arrays.asList接受个中ArrayList类new的目的,add、remove调用的是父类AbstractList中的方法,父类并未当真的兑现。

解决

选择 Iterator 迭代器或许转载成 ArrayList;

本文由永利澳门平台发布于计算机资讯,转载请注明出处:UnsupportedOperationException异常

您可能还会对下面的文章感兴趣: