色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

不要讓Arrays.asList()的陷阱坑了你的代碼!

jf_ro2CN3Fa ? 來源:CSDN ? 2023-07-26 14:27 ? 次閱讀

Java中,我們經常需要將數組轉換為List來方便地進行操作。Arrays.asList()方法是一種常見的方式,但是它存在一個不太常見但需要注意的坑。

本文將深入探討Arrays.asList()的使用,揭示其中的陷阱,并提供解決方案。

Arrays.asList()方法介紹

Arrays.asList()方法是將數組轉換為List的方法,它返回一個List對象,但這個List對象并不是java.util.ArrayList對象,而是Arrays內部的ArrayList對象。

Arrays.ArrayList類繼承自AbstractList,實現了List接口。它重寫了add()、remove()等修改List結構的方法,并將它們直接拋出UnsupportedOperationException異常,從而禁止了對List結構的修改。

具體來說,Arrays.asList()方法返回的是Arrays類中的一個私有靜態內部類ArrayList,它繼承自AbstractList類,實現了List接口。

Arrays.asList()方法的使用非常簡單,只需要將一個數組作為參數傳遞給該方法即可。例如:

String[]arr=newString[]{"a","b","c"};
Listlist=Arrays.asList(arr);

Arrays.asList()方法的坑

盡管Arrays.asList()方法很方便,但也存在一些坑,其中最常見的一個是:在使用Arrays.asList()方法時,如果對返回的List對象進行修改(例如增加、刪除元素),將會拋出"UnsupportedOperationException"異常。

為什么會出現這個異常呢?這是因為Arrays.asList()方法返回的List對象,是一個固定大小的List,不能進行結構上的修改,否則會拋出異常。

下面的代碼演示了這個問題:

String[]arr=newString[]{"a","b","c"};
Listlist=Arrays.asList(arr);
list.add("d");//拋出UnsupportedOperationException異常

上述代碼中,我們嘗試向List對象中添加一個新的元素"d",結果會拋出"UnsupportedOperationException"異常。

解決Arrays.asList()方法的坑

要解決Arrays.asList()方法的坑,我們需要將返回的List對象轉換為一個可修改的List對象。有幾種方法可以實現這個目標:

方法一:使用java.util.ArrayList類

我們可以使用java.util.ArrayList類,將Arrays.asList()方法返回的List對象轉換為一個java.util.ArrayList對象,示例如下:

String[]arr=newString[]{"a","b","c"};
Listlist=newArrayList<>(Arrays.asList(arr));
list.add("d");//正常運行

上述代碼中,我們首先使用Arrays.asList()方法將一個數組轉換為一個List對象,然后使用ArrayList的構造方法,將這個List對象轉換為一個java.util.ArrayList對象,最后可以向這個ArrayList對象中添加元素。

方法二:使用Collections類

我們也可以使用Collections類提供的靜態方法,將Arrays.asList()方法返回的List對象轉換為一個可修改的List對象,示例如下:

String[]arr=newString[]{"a","b","c"};
Listlist=newArrayList<>(Arrays.asList(arr));
Collections.addAll(list,"d");//正常運行

通過Collections.addAll()方法,我們可以將數組中的元素逐個添加到一個新的ArrayList對象中,從而實現了可修改性。

總結

在使用Arrays.asList()方法時,需要注意返回的List對象是一個固定大小的List,不支持結構上的修改操作。為了避免這個陷阱,我們可以使用java.util.ArrayList或Collections類提供的方法將返回的List對象轉換為可修改的List。通過了解這個陷阱并采取相應的解決方案,我們可以安全地將數組轉換為List,并避免潛在的異常情況。

不要讓Arrays.asList()的陷阱坑了你的代碼!

在Java中,我們經常需要將數組轉換為List來方便地進行操作。Arrays.asList()方法是一種常見的方式,但是它存在一個不太常見但需要注意的坑。本文將深入探討Arrays.asList()的使用,揭示其中的陷阱,并提供解決方案。

Arrays.asList()方法介紹

Arrays.asList()方法是將數組轉換為List的方法,它返回一個List對象,但這個List對象并不是java.util.ArrayList對象,而是Arrays內部的ArrayList對象。

Arrays.ArrayList類繼承自AbstractList,實現了List接口。它重寫了add()、remove()等修改List結構的方法,并將它們直接拋出UnsupportedOperationException異常,從而禁止了對List結構的修改。

具體來說,Arrays.asList()方法返回的是Arrays類中的一個私有靜態內部類ArrayList,它繼承自AbstractList類,實現了List接口。

Arrays.asList() 方法的使用非常簡單,只需要將一個數組作為參數傳遞給該方法即可。例如:

String[]arr=newString[]{"a","b","c"};
Listlist=Arrays.asList(arr);

Arrays.asList()方法的坑

盡管Arrays.asList()方法很方便,但也存在一些坑,其中最常見的一個是:在使用Arrays.asList()方法時,如果對返回的List對象進行修改(例如增加、刪除元素),將會拋出"UnsupportedOperationException"異常。

為什么會出現這個異常呢?這是因為Arrays.asList()方法返回的List對象,是一個固定大小的List,不能進行結構上的修改,否則會拋出異常。

下面的代碼演示了這個問題:

String[]arr=newString[]{"a","b","c"};
Listlist=Arrays.asList(arr);
list.add("d");//拋出UnsupportedOperationException異常

上述代碼中,我們嘗試向List對象中添加一個新的元素"d",結果會拋出"UnsupportedOperationException"異常。

解決Arrays.asList()方法的坑

要解決Arrays.asList()方法的坑,我們需要將返回的List對象轉換為一個可修改的List對象。有幾種方法可以實現這個目標:

方法一:使用java.util.ArrayList類

我們可以使用java.util.ArrayList類,將Arrays.asList()方法返回的List對象轉換為一個java.util.ArrayList對象,示例如下:

String[]arr=newString[]{"a","b","c"};
Listlist=newArrayList<>(Arrays.asList(arr));
list.add("d");//正常運行

上述代碼中,我們首先使用Arrays.asList()方法將一個數組轉換為一個List對象,然后使用ArrayList的構造方法,將這個List對象轉換為一個java.util.ArrayList對象,最后可以向這個ArrayList對象中添加元素。

方法二:使用Collections類

我們也可以使用Collections類提供的靜態方法,將Arrays.asList()方法返回的List對象轉換為一個可修改的List對象,示例如下:

String[]arr=newString[]{"a","b","c"};
Listlist=newArrayList<>(Arrays.asList(arr));
Collections.addAll(list,"d");//正常運行

通過Collections.addAll()方法,我們可以將數組中的元素逐個添加到一個新的ArrayList對象中,從而實現了可修改性。

總結

在使用Arrays.asList()方法時,需要注意返回的List對象是一個固定大小的List,不支持結構上的修改操作。為了避免這個陷阱,我們可以使用java.util.ArrayList或Collections類提供的方法將返回的List對象轉換為可修改的List。通過了解這個陷阱并采取相應的解決方案,我們可以安全地將數組轉換為List,并避免潛在的異常情況。

不要讓Arrays.asList()的陷阱坑了你的代碼!





審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • JAVA語言
    +關注

    關注

    0

    文章

    138

    瀏覽量

    20103
  • Arrays
    +關注

    關注

    0

    文章

    6

    瀏覽量

    6422

原文標題:Arrays.asList() 隱藏的陷阱,你避開了嗎?

文章出處:【微信號:芋道源碼,微信公眾號:芋道源碼】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    不要讓其他人的技術債務影響到你

    編寫的代碼所帶來的債務。就像西班牙、希臘和葡萄牙等國家的金融負債會拖累全球經濟一樣,其他人所編寫的軟件中的債務問題也會拖累,即便在自己的代碼中對債務的管理保持著非常負責的態度也是如
    發表于 12-16 14:43

    麻煩大家不要再發有密碼的代碼好嗎

    論壇是大家來學習的地方,不是來炫耀的地方,請問上傳個加密代碼,到底這種貼存在有什么意義?如果不想與大家分享,或者因為公司原因不能讓大家看到,那就不要上傳上來嘛,不要讓大家空歡喜一場。
    發表于 08-07 12:53

    4大絕招護身 參加培訓不被

    有5方面:1.導師和助教支撐技術層面;  2.有質量的教學資料可保證學習的系統和連貫性;  3.hr的閱歷和總結概括能力影響軟能力的提升;  4.敲代碼的團隊氛圍;  5.推薦就業機會。  既然選擇
    發表于 07-11 14:04

    【HarmonyOS HiSpark AI Camera試用連載 】九九八十一的第一--拆箱

    `以下過來人想說的話和一些積累總結。沒啥深入的經驗感覺到好失敗。 0號。注意不要手殘。一個人生道理:差不多就得了,不要沒完沒了!!! 1號
    發表于 10-21 22:41

    說說在鴻蒙開發時遇到的

    說說在鴻蒙中遇到的~
    發表于 11-20 17:21

    Java數組的常用方法_Java:數組工具類Arrays類的常用方法的用法及代碼

    本文主要詳細介紹Java數組的常用方法以及數組工具類Arrays類的常用方法的用法及代碼
    發表于 01-29 10:25 ?2926次閱讀

    如何編寫無法維護的代碼

    不想練功過度走火入魔吧。那就不要讓代碼一眼看去就完全無法維護,只要它實質上是那樣就行了。否則,
    的頭像 發表于 09-05 10:05 ?3519次閱讀

    電源技巧:不要讓USB電壓下降減慢充電器的速度資料下載

    電子發燒友網為提供電源技巧:不要讓USB電壓下降減慢充電器的速度資料下載的電子資料下載,更有其他相關的電路圖、源代碼、課件教程、中文資料、英文資料、參考設計、用戶指南、解決方案等資料,希望可以幫助到廣大的電子工程師們。
    發表于 04-10 08:51 ?24次下載
    電源技巧:<b class='flag-5'>不要讓</b>USB電壓下降減慢充電器的速度資料下載

    電源技巧:不要讓U S B 電壓下降減慢充電器的速度

    電源技巧:不要讓U S B 電壓下降減慢充電器的速度
    發表于 11-03 08:04 ?0次下載
    電源技巧:<b class='flag-5'>不要讓</b>U S B 電壓下降減慢充電器的速度

    Java中Arrays類是什么 Arrays常用方法

    了解Arrays類的概念 **A****rrays** 位于java.util包下,Arrays是一個操作數組的工具類。 Arrays常用方法 Arrays.fill:
    的頭像 發表于 02-17 15:11 ?1054次閱讀
    Java中<b class='flag-5'>Arrays</b>類是什么 <b class='flag-5'>Arrays</b>常用方法

    這17種焊接陷阱遇到過多少?

    良好的焊接是保證電路穩定持久工作的前提。下面給出了常見到的焊接缺陷。看看你遇到過多少種?焊接中的常見問題▲陷阱1:錫珠▲陷阱2:擾動的焊接——在焊接點冷卻過程中焊錫移動,造成焊接表面起霧、結晶、粗糙
    的頭像 發表于 04-14 09:39 ?906次閱讀
    這17種焊接<b class='flag-5'>陷阱</b>,<b class='flag-5'>你</b>遇到過多少?

    不要讓舊設備損害您的SAN

    電子發燒友網站提供《不要讓舊設備損害您的SAN.pdf》資料免費下載
    發表于 09-01 15:05 ?0次下載
    <b class='flag-5'>不要讓</b>舊設備損害您的SAN

    Arrays的copyOf,copyOfRange和fill方法

    在本文中,我們來看看 java.util.Arrays ,我們可以使用 Arrays 創建,比較,排序,搜索,stream 和轉化數組。 創建 我們來看看,使用Arrays 怎么創建一個新的數組
    的頭像 發表于 09-25 14:12 ?459次閱讀

    JDK中java.lang.Arrays 類的源碼解析

    揭開它神秘的面紗。 java.util.Arrays 類是 JDK 提供的一個工具類,用來處理數組的各種方法,而且每個方法基本上都是靜態方法,能直接通過類名Arrays調用。 1、asList
    的頭像 發表于 10-11 15:31 ?622次閱讀
    JDK中java.lang.<b class='flag-5'>Arrays</b> 類的源碼解析

    推挽電路的踩過沒?

    推挽電路的踩過沒?
    的頭像 發表于 11-24 16:25 ?1137次閱讀
    推挽電路的<b class='flag-5'>坑</b>,<b class='flag-5'>你</b>踩過沒?
    主站蜘蛛池模板: 韩国伦理三级| 精品粉嫩BBWBBZBBW| 2017必看无码作品| ppypp午夜限制不卡影院私人| 超清无码波多野吉衣与黑人| 好爽别插了无码视频| 丝瓜影院观看免费高清国际观察| 一本之道高清视频在线观看| 达达兔欧美午夜国产亚洲| 欧美疯狂做受xxxxx喷水| 99久久国产综合精品网成人影院 | 绿巨人www在线观看| 免费看午夜高清性色生活片| 印度12 13free| 老熟女重囗味HDXX| 午夜伦午夜伦锂电影| 男男女女爽爽爽视频免费| 丰满人妻无码AV系列| 精品高清国产a毛片| 亚洲精品午睡沙发系列| 吃奶摸下的羞羞漫画| 麻豆AV久久无码精品九九| 中文在线免费看视频| 摸董事长的裤裆恋老小说| 99久久久无码国产AAA精品| 全黄H全肉细节文NP| 中文字幕无线观看不卡网站| 美女脱得只剩皮肤| 一二三四在线播放免费观看中文版视频| 扒开老师大腿猛进AAA片软件| 久久久久国产一级毛片高清片| 亚久久伊人精品青青草原2020| 国产色综合久久无码有码| 极品少妇伦理一区二区| 伊人久久精品午夜| 欧美不卡一区二区三区| 高h 大尺度纯肉 np快穿| 亚色九九九全国免费视频| 久久re6热在线视频| 亚洲一区二区三不卡高清| 美女内射视频WWW网站午夜|