日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

詳解Java 集合類 List 的那些坑

瀏覽:268日期:2022-08-26 11:35:57

現在的一些高級編程語言都會提供各種開箱即用的數據結構的實現,像 Java 編程語言的集合框架中就提供了各種實現,集合類包含 Map 和 Collection 兩個大類,其中 Collection 下面的 List 列表是我們經常使用的集合類之一,很多的業務代碼都離不開它,今天就來看看 List 列表的一些坑。

第一個坑:Arrays.asList 方法返回的 List 不支持增加、刪除操作

例如我們執行以下代碼:

List<String> strings = Arrays.asList('m', 'g');strings.add('h');

會拋出 java.lang.UnsupportedOperationException 異常,此時你內心 OS what?明明返回的 ArrayList 為啥不能往里面增加元素,這以后還能好好的增加元素嗎? ,然后果斷開啟 Debug 大法:

詳解Java 集合類 List 的那些坑

發現返回的 ArrayList 并不是我們常用的 java.util.ArrayList ,而是 Arrays 的內部類 java.util.Arrays.ArrayList 。進入方法 Arrays.asList 源碼如下:

public static <T> List<T> asList(T... a) { return new ArrayList<>(a);}

方法返回的是 Arrays 的靜態內部類 java.util.Arrays.ArrayList ,該類雖然和 java.util.ArrayList 也繼承自抽象類 java.util.AbstractList ,但是通過該類的源碼發現它并沒有對抽象父類 AbstractList 的 add 方法默認就是拋出 java.lang.UnsupportedOperationException 異常。

詳解Java 集合類 List 的那些坑

這個坑的根本原因是我們調用返回的 strings 的 add 方法是繼承自抽象父類的 add 方法,而抽象父類的方法默認就是拋出 java.lang.UnsupportedOperationException 這個異常。

第二個坑,Arrays.asList 方法返回的新 List 和該方法原始入參數組修改會相互影響

Arrays.asList 方法除了上面這個 不支持增加、刪除元素 這個坑之外,還有另外一個坑:

詳解Java 集合類 List 的那些坑

從以上代碼可以發現,對原始數組的修改會影響我們通過 Arrays.asList 方法獲得的新 List ,深入 java.util.Arrays.ArrayList 的源碼:

private static class ArrayList<E> extends AbstractList<E> implements RandomAccess, java.io.Serializable { private static final long serialVersionUID = -2764017481108945198L; private final E[] a; ArrayList(E[] array) { a = Objects.requireNonNull(array); }... }

可以發現是直接使用了原始的數組,所有當我們使用 Arrays.asList 方式獲得的 List 時要特別注意,因為共享了數組,相互修改時可能產生一些意想不到的 Bug。標準的姿勢之一是將其作為 ArrayList 構造方法的參數重新 new 一個 List 出來即可(e.g. List<String> stringList = new ArrayList<>(Arrays.asList(arrays)) )或者通過 Guava 庫中的 Lists.newArrayList ,將返回的新 List 和原始的數組解耦,就不會再互相影響了。

第三個坑,直接遍歷 List 集合刪除元素會報錯

在直接遍歷集合元素時增加、刪除元素會報錯,比如執行如下代碼:

List<String> stringList = Lists.newArrayList('m', 'g', 'h');for (String s : stringList) { if (Arrays.asList('m', 'h').contains(s)) { stringList.remove(s); }}

以上代碼可以正常編譯通過,但是執行時會拋出 java.util.ConcurrentModificationException 異常,查看其源碼可以發現,刪除元素方法 remove 會使集合結構發生修改,也就是 modCount( 集合實際修改的次數)會修改,在循環過程中,會比較當前 List 的集合實際修改的次數 modCount 與迭代器修改的次數 expectedModCount ,而 expectedModCount 是初始化時的 modCount , 二者不相等,就會報 ConcurrentModificationException 異常。解決方法主要有兩種方式,1.使用 ArrayList 的迭代器方式遍歷,然后調用其中的方法。2.在 JDK 1.8+ 可以使用 removeIf 方法進行刪除操作。

最后扎心一問:調用 ArrayList 的 remove 方法傳入 int 基本類型的數字和 Integer 包裝類型的數字,執行結果是不是一樣的?

到此這篇關于詳解Java 集合類 List 的那些坑的文章就介紹到這了,更多相關Java List集合類坑 內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
久久精选视频| 免费看日韩精品| 欧美亚洲三级| 免费一区二区视频| 视频在线观看一区二区三区| 美女久久久久| 久久激情网站| 欧美日韩国产亚洲一区| 久久蜜桃资源一区二区老牛| 国产高潮在线| 伊人精品一区| 一本一本久久| 7777精品| 精品一区二区三区中文字幕 | 日韩激情一二三区| 国产日韩一区二区三区在线播放| 91精品美女| 久久99青青| 免费毛片在线不卡| 欧美专区18| 国产黄色精品| 国产精品普通话对白| 亚洲精品极品| 欧洲精品一区二区三区| 久久午夜精品一区二区| 国产欧美日本| 欧美日韩国产高清| 国产精品视频一区二区三区综合| 在线精品亚洲欧美日韩国产| 性色一区二区| 精品视频高潮| 午夜国产精品视频| 日日夜夜免费精品视频| 国产在线看片免费视频在线观看| 中文日韩欧美| 福利一区视频| 蜜臀va亚洲va欧美va天堂| 国内精品麻豆美女在线播放视频| 亚洲一区二区三区高清不卡| 久久亚洲道色| 亚洲精品系列| 欧美特黄a级高清免费大片a级| 欧美日韩a区| 日韩精品一区第一页| 日韩大片在线| 国产精品色婷婷在线观看| 免费人成精品欧美精品| 丰满少妇一区| 国产精品传媒麻豆hd| 香蕉视频成人在线观看| 久久久精品久久久久久96| 鲁大师精品99久久久| 国产毛片精品久久| 成人台湾亚洲精品一区二区| 在线免费观看亚洲| 午夜久久99| 国产精品密蕾丝视频下载| 免费久久精品视频| 亚洲一区日韩在线| 久色成人在线| 日韩视频精品在线观看| 欧美亚洲在线日韩| 久久久夜精品| 欧美日韩一区二区三区视频播放| 福利一区二区免费视频| 久久久免费人体| 精品国产亚洲一区二区三区大结局| 亚洲精品裸体| 911亚洲精品| 国产香蕉精品| 久久亚洲黄色| 久久视频国产| 99热精品在线| 日韩有吗在线观看| 国产欧美另类| 久久久久久久久99精品大| 亚洲精品网址| 黑丝一区二区三区| 国产免费成人| 97久久精品| 日韩伦理福利| 伊人久久大香伊蕉在人线观看热v| 亚洲香蕉视频| 免费视频一区二区三区在线观看| 免费福利视频一区二区三区| 欧美91福利在线观看| 亚洲91网站| 日本蜜桃在线观看视频| 水蜜桃久久夜色精品一区的特点| 在线看片日韩| 日韩欧美一区二区三区在线观看| 99热精品在线| 国产精品亲子伦av一区二区三区| 在线天堂中文资源最新版| 在线免费观看亚洲| 天堂中文av在线资源库| 亚洲开心激情| 日韩和的一区二在线| 亚洲开心激情| 在线看片福利| 日韩毛片一区| 国产一区二区三区精品在线观看| 夜夜嗨网站十八久久| 国产欧美久久一区二区三区| 欧美日韩一区二区三区视频播放| 青青伊人久久| 蜜桃视频一区二区三区| 日韩av不卡一区二区| 欧美精品九九| 久久精品一区二区国产| 日本欧洲一区二区| 欧美福利专区| 亚洲综合电影| 久久精品一区二区国产| 亚洲主播在线| 久久视频精品| 国产v日韩v欧美v| 91国内精品| 蜜臀av一区二区在线免费观看| 高清不卡亚洲| 久久精品国产999大香线蕉| 日本亚洲最大的色成网站www| 国内精品美女在线观看| 四虎精品永久免费| 日韩黄色av| 欧美在线看片| 国产精品亚洲欧美一级在线| 日韩黄色av| 亚洲激情精品| 亚洲最大av| 日本三级亚洲精品| 国产精品一级| 日韩伦理福利| 欧美性感美女一区二区| 久久免费大视频| 伊人久久婷婷| 蜜臀av性久久久久蜜臀aⅴ流畅 | 性欧美精品高清| 婷婷丁香综合| 中文无码日韩欧| 一区二区国产精品| 天堂av在线一区| 在线视频亚洲| 国产一区亚洲| 日韩一区二区免费看| 亚洲午夜精品久久久久久app| 天堂√中文最新版在线| 久久精品国产亚洲夜色av网站 | 精品国模一区二区三区| 99视频精品全国免费| 激情综合亚洲| 久久国产直播| 三级久久三级久久久| 日韩av中文在线观看| 亚洲丝袜啪啪| 国产欧美一区| 国产资源在线观看入口av| 国产精品伊人| 亚洲黄色免费av| 欧美日韩国产一区二区三区不卡| 夜久久久久久| 久久国产麻豆精品| 麻豆国产欧美一区二区三区 | 亚洲国产不卡| 日韩高清一区二区| 国产精品大片免费观看| 国产精品久久久久久久久久10秀| 日韩另类视频| 亚洲欧美日本日韩| 老司机精品在线| 国产日韩高清一区二区三区在线 | 欧美经典一区| 欧美特黄一级| 国产精品资源| 亚洲大全视频| 久久99精品久久久野外观看| 激情五月色综合国产精品| 亚洲一区二区三区久久久| 精品中文字幕一区二区三区四区| 在线中文字幕播放| 中文字幕免费一区二区| 高清精品久久| 日韩综合小视频| 黄色日韩精品| 日韩成人三级| 高清日韩欧美| 老牛国内精品亚洲成av人片| 视频国产精品| 日韩专区视频网站| 老色鬼久久亚洲一区二区| 999精品一区| 激情久久久久久久| 久久一区二区三区喷水| 国产欧美一区二区三区精品酒店| 精品网站aaa| av资源新版天堂在线| 国产欧美一区二区三区精品酒店| 狠狠久久伊人| 黑森林国产精品av| 日韩精品专区|