Arrays.asList()是個坑
在java語言中,把陣列轉換成List集合,有個很方便的方法就是 List
但你可能不知道這樣得到的List它的長度是不能改變的。當你向這個List新增或刪除一個元素時(例如 list.add("d");)程式就會丟擲異常(java.lang.UnsupportedOperationException)。怎麼會這樣?!只需要看看asList()方法是怎麼實現的就行了。
public static
return new ArrayList(a);
}
當你看到這段程式碼時可能覺得沒啥問題啊,不就是返回了一個ArrayList物件嗎?問題就出在這裡。這個ArrayList不是java.util包下的,而是java.util.Arrays.ArrayList,顯然它是Arrays類自己定義的一個內部類!這個內部類沒有實現add()、remove()方法,而是直接使用它的父類AbstractList的相應方法。而AbstractList中的add()和remove()是直接丟擲java.lang.UnsupportedOperationException異常的!
總結一下吧,如果你的List只是用來遍歷,就用Arrays.asList()吧!如果你的List還要新增或刪除元素,還是乖乖地new一個java.util.ArrayList,然後一個一個的新增元素吧!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4687/viewspace-2808504/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Arrays.asList存在的坑
- Java踩坑記系列之Arrays.AsListJava
- jquery的html()方法是個坑jQueryHTML
- Arrays.asList():使用指南
- 轉行網際網路運營是個坑
- 前端響應式佈局為什麼是個坑?前端
- 踩了個DNS解析的坑,但我還是沒想通DNS
- 廣西發現天坑群,由19個天坑組成 天坑到底是怎樣形成的?
- 通過Arrays.asList方法將陣列轉成集合後,能否修改集合個數?陣列
- Arrays.asList()返回的是一固定長度的List,不支援add() remove() clear()等操作REM
- 我是個失敗的產品經理,我走過這5個坑
- java原始碼分析 Arrays.asList()與Collections.unmodifiableList()Java原始碼
- 程式中算錢不能用浮點型別是個什麼坑?型別
- 一個蘿蔔一個坑
- Arrays.asList()使用異常:java.lang.UnsupportedOperationExceptionJavaException
- 你是怎麼入坑的?
- 又踩坑了!BigDecimal使用的5個坑!Decimal
- 關於Arrays.asList返回List無法新增和刪除?
- python第一個坑Python
- React兩個bug踩坑React
- Python的16個“坑”Python
- 在這裡佔個坑
- MySQLtimestamp的一個坑MySql
- 一文看懂外賣O2O:電商是核心 小心三個坑
- Java模組系統JPMS是巨坑?- jodastephenJavaAST
- 分享一個composer的坑
- go語言的31個坑Go
- Golang Recover的一個小坑Golang
- 小程式canvas的一個坑Canvas
- 8種最坑的SQL錯誤用法,第一個就很坑?SQL
- 【Python有坑系列】交換兩個陣列的切片,有坑Python陣列
- 【踩坑指南】執行緒池使用不當的五個坑執行緒
- 蘋果正式開放競價廣告 這也許是一大波流量紅利……也可能是個坑蘋果
- 避坑手冊!Python 對比兩個 datetime 大小的坑Python
- PHP Composer 的一個小坑PHP
- Golang 需要避免踩的 50 個坑Golang
- ajax中回撥的幾個坑
- Docker踩坑四個教訓 - resurfaceDocker