java.lang.UnsupportedOperationException 異常分析

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。

今天將一個數組轉換成 List 然后進行 remove 操作時卻拋出 java.lang.UnsupportedOperationException 異常。


String pattern = " ^, v, m, n-music-name, $ ";
String[] patternSplit = Utils.getStringTrimSplit(pattern, ",");// 去除模式中的^和$標識
List<String> natureList = Arrays.asList(patternSplit);
if ("^".equals(natureList.get(0))) {natureList.remove(0); // throw java.lang.UnsupportedOperationException
}
if ("$".equals(natureList.get(natureList.size() - 1))) {natureList.remove(natureList.size() - 1); // throw java.lang.UnsupportedOperationException
}String[] natureArray = natureList.toArray(new String[natureList.size()]);
System.out.println(natureArray.length);

看了下源碼才發現使用 Arrays.asList(arr) 轉換的 List 并不能進行 add 和 remove 操作。
Arrays.asList(arr) 返回的類型是 Aarrays$ArrayList 并不是 ArrayList,
Aarrays$ArrayList 和 ArrayList 都繼承 AbstractList,但是 AbstractList 中的 add 方法和 remove 方法都是直接拋出 UnsupportedOperationException,并沒有直接實現。
ArrayList 重寫了 add 方法和 remove 方法,能夠進行對應的添加和刪除操作,Aarrays$ArrayList 卻沒有去重寫,所以此時調用 add 方法和 remove 方法會拋出 UnsupportedOperationException。

解決辦法


// old
List<String> natureList = Arrays.asList(patternSplit);
// new 
List<String> natureList = new ArrayList<>(Arrays.asList(patternSplit));

源碼

Arrays.asList(arr) 返回 Aarrays$ArrayList , Aarrays$ArrayList 繼承 AbstractList


ArrayList 繼承 AbstractList

AbstractList 中的 add 方法和 remove 方法都直接拋出 UnsupportedOperationException

ArrayList 重寫 add 方法和 remove 方法

?

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/449268.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/449268.shtml
英文地址,請注明出處:http://en.pswp.cn/news/449268.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

『并發包入坑指北』之阻塞隊列

前言 較長一段時間以來我都發現不少開發者對 jdk 中的 J.U.C&#xff08;java.util.concurrent&#xff09;也就是 Java 并發包的使用甚少&#xff0c;更別談對它的理解了&#xff1b;但這卻也是我們進階的必備關卡。 之前或多或少也分享過相關內容&#xff0c;但都不成體系&am…

個人理財有哪些基本原理和方法?

現金為王&#xff1a;不超額消費&#xff0c;不使用信用卡&#xff0c;不負債&#xff08;房貸除外&#xff09; 信貸消費已經成為主流的今天&#xff0c;強調使用現金似乎與時代格格不入。而對于信貸消費的依賴&#xff0c;常常來自于下面幾個看起來十分有力的觀點&#xff…

2019年3月4日 701. Insert into a Binary Search Tree

比較基礎的二叉樹排序樹插入&#xff0c;寫了個遞歸。# Definition for a binary tree node. # class TreeNode(object): # def __init__(self, x): # self.val x # self.left None # self.right Noneclass Solution(object):def insertIntoBST…

2020-3-18

題目一&#xff1a; JavaScript 字符串轉換為數組 其一&#xff1a; let str"apple"; console.log([...str]);運行結果 其二&#xff08;使用split()&#xff09;&#xff1a; let str"apple"; console.log(str.split());注1&#xff1a;如果將參數省略…

思維導圖,流程圖模板整合

思維導圖與流程圖在工作中都是經常使用的&#xff0c;出現頻率較高的&#xff0c;有些不會繪制的或者是剛接觸這一類的圖表形式的都會選擇使用模板來完成工作&#xff0c;但是很多朋友卻不知道模板在&#xff0c;今天要給大家分享的是幾款孩子走精美的思維導圖&#xff0c;流程…

解決 List 執行 remove 時報異常 java.lang.UnsupportedOperationException

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 一、情況描述 報錯如題&#xff1a; java.lang.UnsupportedOperationException: nullat java.util.Collections$UnmodifiableCollectio…

2020-3-19

題目一&#xff1a; js split() 分割字符串生成數組 let str"I am a student"; let arrstr.split(" "); for(let i0;i<arr.length;i){console.log(arr[i]); }分析&#xff1a;這里利用字符串的空格來分割字符串生成數組。split()方法的參數設置為"…

上班族怎么創業?白領一族創業當老板!

班族怎么創業?很多上班族無法面對每天平淡的生活&#xff0c;于是想要擁有一份屬于自己的事業。上班族創業有哪些好的項目呢?結合自已的興趣愛好&#xff0c;找到適合的項目&#xff0c;上班的同時也能當老板。 上班族怎么創業?創業項目1、開投資額小的特色店 嘗試開店創業的…

一文告訴你 Event Loop 是什么?

Event Loop 也叫做“事件循環”&#xff0c;它其實與 JavaScript 的運行機制有關。 JS初始設計 JavaScript 在設計之初便是單線程&#xff0c;程序運行時&#xff0c;只有一個線程存在&#xff0c;在特定的時候只能有特定的代碼被執行。這和 JavaScript 的用途有關&#xff0c;…

Spring Boot -Shiro配置多Realm

2019獨角獸企業重金招聘Python工程師標準>>> 核心類簡介 xxxToken&#xff1a;用戶憑證 xxxFilter&#xff1a;生產token&#xff0c;設置登錄成功&#xff0c;登錄失敗處理方法&#xff0c;判斷是否登錄連接等 xxxRealm&#xff1a;依據配置的支持Token來認證用戶信…

idea工具debug斷點紅色變成灰色

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 沒事別瞎點&#xff0c;禁用了斷點當然不走了 轉自&#xff1a;https://blog.csdn.net/anlve512/article/details/54583469

2020-3-20前端題目

題目一&#xff1a; 判斷checked復選框是否有被選中 <!DOCTYPE html> <html> <head> <meta charset" utf-8"> <script> window.onload () > {let odivdocument.getElementById("ant");let ckdocument.getElementById(&…

上班族如何當老板 五大模式任你選

中國教育在線訊 辭職創業&#xff0c;還是維持現在穩定的工作?這個是很多上班族都糾結過的問題&#xff0c;一邊是穩定的工作和收入&#xff0c;一邊是創業當老板的誘惑&#xff0c;真是很難選擇。 其實&#xff0c;如果安排合理是可以“魚與熊掌”兼得的&#xff0c;沈陽市古…

利用 Linux tap/tun 虛擬設備寫一個 ICMP echo 程序

利用 Linux tap/tun 虛擬設備寫一個 ICMP echo 程序 前面兩篇文章已經介紹過 tap/tun 的原理和配置工具。這篇文章通過一個編程示例來深入了解 tap/tun 的程序結構。 01 準備工作 首先通過 modinfo tun 查看系統內核是否支持 tap/tun 設備驅動。 Copy[rootby ~]# modinfo tun f…

2020-3-21

題目一&#xff1a; JavaScript 獲取月份最后一天日期 月份最后一天日期可能是不同的&#xff0c;比如有的是30、有的是31還有的是28。 <!DOCTYPE html><html> <head> <meta charset" utf-8"> <script type"text/javascript"&…

正方形矩陣求對角線之和

nint(input()) a[] for i in range(n): #循環體里面加入input&#xff08;&#xff09;可以實現一共執行n次input&#xff08;&#xff09; lst[int(x) for x in input().split()]a.append(lst) #用列表解析&#xff0c;兩層列表代表行列&#xff0c;很巧妙的方法 w0 bl…

解決: Unable to connect to zookeeper server within timeout: 5000

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 一個項目啟動不起來了&#xff0c;報錯如題&#xff1a; Caused by: org.I0Itec.zkclient.exception.ZkTimeoutException: Unable to c…

閑錢請看如何處理

買一點基金定投。基金是專家幫你理財。基金的起始資金最低單筆是1000元,定投200元起投 買基金到銀行或者基金公司都行。銀行能代理很多基金公司的業務&#xff0c;具體開戶找銀行理財專柜辦理。現在有些證券公司也有代理基金買賣的。在銀行開通網上銀行后網上購買一般收費上有優…

JAVA 數組元素的反轉

package Code411;/*數組元素的反轉本來[1,2,3,4]反轉后[4,3,2,1]1.對稱位置的元素交換2.對稱位子需要兩個索引3.int temp a&#xff1b;ab;btemp;4.什么時候停止交換&#xff08;1&#xff09;minmax (2)min>max */public class CodeArrayReverse { public static void m…

requests模塊相關用法

requests模塊 -1. 什么是requests模塊- python原生的一個基于網絡請求的模塊&#xff0c;模擬瀏覽器發起請求。 -2. 為什么使用requests模塊-1. 自動處理url編碼-2. 自動處理post請求參數-3. 簡化cookie和代理的操作-3. requests模塊如何被使用安裝&#xff1a; pip install re…