java.lang.UnsupportedOperationException异常解决方法(List)

1、将数组转换成集合

String [] arr = new String[]{"1", "2", "3"};
List<String> list = Arrays.asList(arr);
list.remove("1");

控制台报错:

Exception in thread "main" java.lang.UnsupportedOperationException
	at java.util.AbstractList.remove(AbstractList.java:161)
	at java.util.AbstractList$Itr.remove(AbstractList.java:374)
	at java.util.AbstractCollection.remove(AbstractCollection.java:293)

2、问题原因:

Arrays.asList(arr);
--------------------------------
public static <T> List<T> asList(T... a) {
      return new ArrayList<>(a);
}
这个 ArrayList;是Arrays类里的静态内部类,继承AbstractList,没有重写add()以及remove()方法,而是直接使用AbstractList类里的add()、remove()方法;
--------------------------------
List<String> stringList = new ArrayList<>();
直接 new ArrayList<>(),ArrayList类也是继承AbstractList,但是重写了AbstractList的add()、remove()方法;

3、解决方法:

List<String> list = new ArrayList<>(Arrays.asList(arr));
将数组通过Arrays.asList转化为List传入new ArrayList<>()里得到新的List, 然后用新的List进行add()、remove()操作。

 

 

posted @ 2022-06-01 13:29  唏嘘-  阅读(315)  评论(0编辑  收藏  举报