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
- List.of() VS Arrays.asList()
- Arrays.asList():使用指南
- 轉行網際網路運營是個坑
- 前端響應式佈局為什麼是個坑?前端
- 踩了個DNS解析的坑,但我還是沒想通DNS
- 廣西發現天坑群,由19個天坑組成 天坑到底是怎樣形成的?
- 通過Arrays.asList方法將陣列轉成集合後,能否修改集合個數?陣列
- Arrays.asList()使用異常:java.lang.UnsupportedOperationExceptionJavaException
- java原始碼分析 Arrays.asList()與Collections.unmodifiableList()Java原始碼
- 程式中算錢不能用浮點型別是個什麼坑?型別
- 又踩坑了!BigDecimal使用的5個坑!Decimal
- React兩個bug踩坑React
- 分享一個composer的坑
- 為什麼要謹慎使用Arrays.asList、ArrayList的subList?
- 關於Arrays.asList返回List無法新增和刪除?
- 避坑手冊!Python 對比兩個 datetime 大小的坑Python
- 十二個坑爹的Python陷阱Python
- PHP Composer 的一個小坑PHP
- go語言的31個坑Go
- Golang Recover的一個小坑Golang
- 從入門到退坑,詳細解密IT行業的5個崗位,最賺錢的是哪個?解密行業
- 【Python有坑系列】交換兩個陣列的切片,有坑Python陣列
- 【踩坑指南】執行緒池使用不當的五個坑執行緒
- 8種最坑的SQL錯誤用法,第一個就很坑?SQL
- ajax中回撥的幾個坑
- Golang 需要避免踩的 50 個坑Golang
- 關於 ulimit 的兩個天坑MIT
- 填坑-十萬個為什麼?(15)
- Array.prototype.splice 的一個坑
- go select case的一個小坑Go
- 南京求個測開的坑位
- 今天踩了一個基礎坑
- Docker踩坑四個教訓 - resurfaceDocker
- 趕快發文章!!先佔個坑
- Java模組系統JPMS是巨坑?- jodastephenJavaAST
- 雲桌面是坑,還是超讚的?就看你有沒選對!