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

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Java踩坑記錄之Arrays.AsList

瀏覽:116日期:2022-08-21 15:51:16

前言

java.util.Arrays的asList方法可以方便的將數(shù)組轉(zhuǎn)化為集合,我們平時(shí)開(kāi)發(fā)在初始化ArrayList時(shí)使用的比較多,可以簡(jiǎn)化代碼,但這個(gè)靜態(tài)方法asList()有幾個(gè)坑需要注意:

一. 如果對(duì)集合使用增加或刪除元素的操作將會(huì)報(bào)錯(cuò)

如下代碼:

List list = Arrays.asList('a','b','c');list.add('d');

輸出結(jié)果:

Exception in thread 'main' java.lang.UnsupportedOperationExceptionat java.util.AbstractList.add(AbstractList.java:148)at java.util.AbstractList.add(AbstractList.java:108)at ArraysAsListTest.main(ArraysAsListTest.java:7)

Arrays.asList的源碼雖然返回的是一個(gè)ArrayList,但這個(gè)ArrayList是Arrays內(nèi)部的一個(gè)靜態(tài)類(java.util.Arrays.ArrayList),并不是我們平時(shí)用的java.util.ArrayList只是名字一樣,包名不一樣:

Java踩坑記錄之Arrays.AsList

這個(gè)ArrayList也繼承自AbstractList,但是卻沒(méi)有實(shí)現(xiàn)add(),remove()方法用這兩個(gè)方法其實(shí)調(diào)用的是AbstractList的默認(rèn)方法:

public void add(int index, E element) { throw new UnsupportedOperationException();}

直接拋出' UnsupportedOperationException'的異常!

所以當(dāng)我們調(diào)用這個(gè)ArrayList的add方法時(shí)其實(shí)是調(diào)用了抽象集合類里的add方法,就拋出了上面的異常,原因是數(shù)組雖然提供了轉(zhuǎn)集合的方法, 但本質(zhì)上還是個(gè)數(shù)組,數(shù)組的長(zhǎng)度是固定的,所以jdk的作者沒(méi)有實(shí)現(xiàn)add()和remove()方法。

大家在使用的時(shí)候需要注意,要結(jié)合具體業(yè)務(wù)場(chǎng)景判斷:如果只是對(duì)轉(zhuǎn)成后的集合進(jìn)行遍歷或使用stream()流操作都沒(méi)有問(wèn)題,可以正常使用(修改元素也沒(méi)問(wèn)題) 但如果需要新增元素或刪除元素等改變集合長(zhǎng)度的操作就要避免,否則報(bào)錯(cuò)就會(huì)影響到我們正常的業(yè)務(wù)邏輯。

二. 長(zhǎng)度問(wèn)題

還是Arrays的asList(),該方法無(wú)法將一個(gè)基本類型的數(shù)組轉(zhuǎn)換成集合List,或者說(shuō)基本類型雖然能轉(zhuǎn)換成功,但不是'我們想要的集合',因?yàn)閍sList方法接收的是一個(gè)泛型的變長(zhǎng)參數(shù)。

而基本數(shù)據(jù)類型是無(wú)法被泛型化的,這樣的話對(duì)于泛型而言,基本數(shù)據(jù)類型會(huì)被作為一個(gè)'[x'的類型,'['表示這是一個(gè)數(shù)組,'x'為當(dāng)前數(shù)組的類型,例如: int[] 實(shí)際上它的類型是'[I'

Java踩坑記錄之Arrays.AsList

這樣的話Arrays.asList傳入的參數(shù)是基本類型的話,會(huì)把數(shù)組當(dāng)做一個(gè)元素處理(長(zhǎng)度=1),如果我們要遍歷List或獲取List的長(zhǎng)度就不準(zhǔn)確了,類似下面的用法:

int array[] = {1,2,3,4,5};List list = Arrays.asList(array);System.out.println('長(zhǎng)度='+list.size());System.out.println('是否含有元素3='+list.contains(3));

輸出結(jié)果:

長(zhǎng)度=1是否含有元素3=false

如果我們的代碼里用到了這樣獲取長(zhǎng)度或判斷是否包含指定元素的操作就要注意寫法,否則就會(huì)影響我們的邏輯流程!

為避免這樣的問(wèn)題出現(xiàn),有很多種其他寫法,比如將array轉(zhuǎn)成包裝類(即引用類型),如下:

Integer array[] = {1,2,3,4,5};List list = Arrays.asList(array);System.out.println('長(zhǎng)度='+list.size());System.out.println('是否含有元素3='+list.contains(3));

輸出結(jié)果:

長(zhǎng)度=5是否含有元素3=true

當(dāng)然也可以使用google的集合類'Ints.asList',如下:

int array[] = {1,2,3,4,5};List list = Ints.asList(array);System.out.println('長(zhǎng)度='+list.size());System.out.println('是否含有元素3='+list.contains(3));

輸出結(jié)果:

長(zhǎng)度=5是否含有元素3=true

但是google的Ints.asList方法返回的list也是一個(gè)自己實(shí)現(xiàn)的集合,同樣不支持add和remove方法,如果既要保證轉(zhuǎn)換成list后的數(shù)據(jù)長(zhǎng)度正確又要能增刪操作的話,就用java.util.ArrayList吧。

三. Arrays.asList方法返回的是數(shù)組的一個(gè)視圖,也就是說(shuō)對(duì)這個(gè)list的操作都會(huì)反映在原數(shù)組上

總結(jié)

到此這篇關(guān)于Java踩坑記錄之Arrays.AsList的文章就介紹到這了,更多相關(guān)Java踩坑Arrays.AsList內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Java
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产日韩欧美三区| 一区二区电影| 国产视频一区二| 日韩高清成人在线| 欧美自拍一区| 国产日韩一区二区三免费高清| 亚洲精品影视| 日韩中出av| 国产欧美一区二区色老头| 国产三级精品三级在线观看国产| 国产欧美三级| 精品视频高潮| av综合电影网站| 99久久www免费| 尤物在线精品| 亚洲精品极品| 日韩欧美在线精品| 国产伦理一区| 国产+成+人+亚洲欧洲在线| 欧美激情另类| 国户精品久久久久久久久久久不卡| 悠悠资源网久久精品| 亚洲精品九九| 精品久久久网| 婷婷成人综合| 午夜性色一区二区三区免费视频| 国产亚洲一区二区三区不卡| 久久伊人久久| 国产一在线精品一区在线观看| 国产一级一区二区| 国产亚洲字幕| 国产一区二区亚洲| 欧美.日韩.国产.一区.二区| 亚洲免费福利一区| 精品国内亚洲2022精品成人| 蜜桃成人av| 青草久久视频| 欧美成a人免费观看久久| 日韩精品一二三| 久久久久伊人| 国产精品97| 91久久精品无嫩草影院| 精精国产xxxx视频在线野外| 日韩精品一区第一页| 久久女人天堂| 亚洲一区二区毛片| 国产精品一区二区免费福利视频| 91精品韩国| 一区二区高清| 三级在线看中文字幕完整版| 中文字幕中文字幕精品| 精品国产亚洲日本| 亚洲欧美日韩视频二区| 蜜桃av一区二区在线观看| 亚洲一区二区免费看| 亚洲专区在线| 美女视频黄久久| 成人免费网站www网站高清| 亚洲综合专区| 日韩1区在线| 在线国产日韩| 国产精品久久久久9999高清| 亚洲91视频| 欧美偷窥清纯综合图区| 午夜av成人| 日韩二区三区在线观看| 亚洲电影有码| 国产日韩欧美一区二区三区在线观看| 韩国精品主播一区二区在线观看| 蜜臀av一区二区三区| а√在线中文在线新版| 在线观看亚洲精品福利片| 国产精品精品国产一区二区| 中文字幕亚洲影视| 久久婷婷久久| 国产精品一区二区美女视频免费看| 久久久天天操| 午夜欧美在线| 国产videos久久| a日韩av网址| 亚洲欧洲午夜| 蜜桃成人精品| 国产亚洲一区二区三区不卡| 999久久久精品国产| 国产女人18毛片水真多18精品| 国产91久久精品一区二区| 久久gogo国模啪啪裸体| 欧美搞黄网站| 久久精品国产免费| 玖玖精品视频| 国产精品av一区二区| 国产精品91一区二区三区| 91大神在线观看线路一区| 亚洲在线网站| 奇米狠狠一区二区三区| 另类欧美日韩国产在线| 麻豆亚洲精品| 久久精品亚洲欧美日韩精品中文字幕| 国产精品激情电影| 香蕉久久久久久| 亚洲一区不卡| 国产精品99一区二区| 国产精品国产一区| а√天堂8资源在线| 日韩国产欧美三级| 国产日韩一区二区三区在线| 午夜一级在线看亚洲| 9久re热视频在线精品| 精品一区二区三区中文字幕视频| 国产精品日本欧美一区二区三区| 麻豆91精品视频| 久久精品国产精品亚洲毛片| 日韩视频精品在线观看| 亚洲伦乱视频| 成人一区不卡| 日韩av专区| 日韩.com| 麻豆91在线播放| 美女视频黄免费的久久| 久久99蜜桃| 精品视频一二| 青青草视频一区| 婷婷亚洲成人| 日本在线不卡视频一二三区| 亚洲免费一区三区| 亚洲精品乱码日韩| 日韩欧美三区| 日韩动漫一区| 欧美偷窥清纯综合图区| 国产亚洲一卡2卡3卡4卡新区| 亚洲综合激情在线| 亚洲久久一区| 午夜天堂精品久久久久| 日韩av资源网| 91综合久久爱com| 国产精品对白久久久久粗| 欧美影院精品| 久久精品av麻豆的观看方式| 久久国产人妖系列| 精品视频在线观看网站| 天堂中文av在线资源库| 美女精品视频在线| 丰满少妇一区| 精品国产午夜| 免费在线欧美黄色| 国产精品久久久免费| 日韩av黄色在线| 国产精品流白浆在线观看| 欧美精品91| 精品国产a一区二区三区v免费| a天堂资源在线| 国产精选在线| 亚洲不卡系列| 亚洲欧美日韩国产一区| 最新国产精品| 久久99精品久久久久久园产越南| 国产在线日韩精品| 99精品在线免费在线观看| 免费视频久久| 欧美亚洲综合视频| 精品国产成人| 欧美国产日本| 欧美成人综合| 精品日韩一区| 日韩欧美综合| 日韩精品电影一区亚洲| 日韩中文字幕一区二区高清99| 亚洲精品美女91| 久久精品国产精品亚洲毛片| 精精国产xxxx视频在线播放| 国产模特精品视频久久久久| 久久国产日韩欧美精品| 天堂а√在线最新版中文在线| 国产午夜精品一区二区三区欧美 | 蜜臀久久99精品久久久久久9| 欧美有码在线| 亚洲播播91| 亚洲国产成人精品女人| 一区二区三区四区日本视频| 日韩成人亚洲| 丝袜脚交一区二区| 久久精品xxxxx| 国产 日韩 欧美一区| 国产精品日本| 欧美激情 亚洲a∨综合| 亚洲夜间福利| 国产欧美三级| 亚洲国产影院| 国产免费久久| 国产精品嫩草99av在线| 久久xxx视频| 视频在线在亚洲| 精品中文在线| 欧美资源在线| 伊人影院久久| 精品中文一区| 日本一区福利在线| 少妇精品久久久一区二区三区| 成人精品高清在线视频| 日本不卡视频一二三区|