精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Java數(shù)組轉(zhuǎn)List的三種方式及對比

開發(fā) 后端
本文介紹Java中數(shù)組轉(zhuǎn)為List三種情況的優(yōu)劣對比,以及應(yīng)用場景的對比,以及程序員常犯的類型轉(zhuǎn)換錯誤原因解析。

[[350222]]

前言:

本文介紹Java中數(shù)組轉(zhuǎn)為List三種情況的優(yōu)劣對比,以及應(yīng)用場景的對比,以及程序員常犯的類型轉(zhuǎn)換錯誤原因解析。

一.最常見方式(未必最佳)

通過 Arrays.asList(strArray) 方式,將數(shù)組轉(zhuǎn)換List后,不能對List增刪,只能查改,否則拋異常。

關(guān)鍵代碼:List list = Arrays.asList(strArray); 

  1. private void testArrayCastToListError() { 
  2.   String[] strArray = new String[2]; 
  3.   List list = Arrays.asList(strArray); 
  4.   //對轉(zhuǎn)換后的list插入一條數(shù)據(jù) 
  5.   list.add("1"); 
  6.   System.out.println(list); 
  7.  } 

執(zhí)行結(jié)果: 

  1. Exception in thread "main" java.lang.UnsupportedOperationException 
  2.  at java.util.AbstractList.add(AbstractList.java:148) 
  3.  at java.util.AbstractList.add(AbstractList.java:108) 
  4.  at com.darwin.junit.Calculator.testArrayCastToList(Calculator.java:19) 
  5.  at com.darwin.junit.Calculator.main(Calculator.java:44) 

程序在list.add(“1”)處,拋出異常:UnsupportedOperationException。

原因解析:

Arrays.asList(strArray)返回值是java.util.Arrays類中一個私有靜態(tài)內(nèi)部類java.util.Arrays.ArrayList,它并非java.util.ArrayList類。java.util.Arrays.ArrayList類具有 set(),get(),contains()等方法,但是不具有添加add()或刪除remove()方法,所以調(diào)用add()方法會報錯。

使用場景:Arrays.asList(strArray)方式僅能用在將數(shù)組轉(zhuǎn)換為List后,不需要增刪其中的值,僅作為數(shù)據(jù)源讀取使用。

二.數(shù)組轉(zhuǎn)為List后,支持增刪改查的方式

通過ArrayList的構(gòu)造器,將Arrays.asList(strArray)的返回值由java.util.Arrays.ArrayList轉(zhuǎn)為java.util.ArrayList。

關(guān)鍵代碼:ArrayList list = new ArrayList(Arrays.asList(strArray)) ;

  1. private void testArrayCastToListRight() { 
  2.   String[] strArray = new String[2]; 
  3.   ArrayList<String> list = new ArrayList<String>(Arrays.asList(strArray)) ; 
  4.   list.add("1"); 
  5.   System.out.println(list); 
  6.  } 

執(zhí)行結(jié)果:成功追加一個元素“1”。 

  1. [nullnull, 1] 

使用場景:需要在將數(shù)組轉(zhuǎn)換為List后,對List進行增刪改查操作,在List的數(shù)據(jù)量不大的情況下,可以使用。

三.通過集合工具類Collections.addAll()方法(最高效)

通過Collections.addAll(arrayList, strArray)方式轉(zhuǎn)換,根據(jù)數(shù)組的長度創(chuàng)建一個長度相同的List,然后通過Collections.addAll()方法,將數(shù)組中的元素轉(zhuǎn)為二進制,然后添加到List中,這是最高效的方法。

關(guān)鍵代碼:

  1. ArrayList< String> arrayList = new ArrayList<String>(strArray.length); 
  2. Collections.addAll(arrayList, strArray); 

測試:

  1. private void testArrayCastToListEfficient(){ 
  2.   String[] strArray = new String[2]; 
  3.   ArrayList< String> arrayList = new ArrayList<String>(strArray.length); 
  4.   Collections.addAll(arrayList, strArray); 
  5.   arrayList.add("1"); 
  6.   System.out.println(arrayList); 
  7.  } 

執(zhí)行結(jié)果:同樣成功追加一個元素“1”。

  1. [nullnull, 1] 

使用場景:需要在將數(shù)組轉(zhuǎn)換為List后,對List進行增刪改查操作,在List的數(shù)據(jù)量巨大的情況下,優(yōu)先使用,可以提高操作速度。

注:附上Collections.addAll()方法源碼:

  1. public static <T> boolean addAll(Collection<? super T> c, T... elements) { 
  2.         boolean result = false
  3.         for (T element : elements) 
  4.             result |= c.add(element);//result和c.add(element)按位或運算,然后賦值給result 
  5.         return result; 
  6.     } 

問題解答問題:數(shù)組類型如果是整型數(shù)組,轉(zhuǎn)為List時,會報錯?

答案: 在JDK1.8環(huán)境中測試,這三種轉(zhuǎn)換方式是沒有問題的。放心使用。對于Integer[]整型數(shù)組轉(zhuǎn)List的方法和測試結(jié)果如下:

方式一:不支持增刪

  1. Integer[] intArray1 = new Integer[2]; 
  2. List<Integer> list1 = Arrays.asList(intArray1); 
  3. System.out.println(list1); 

運行結(jié)果: 

  1. [nullnull

方式二:支持增刪

  1. Integer[] intArray2 = new Integer[2]; 
  2. List<Integer> list2 = new ArrayList<Integer>(Arrays.asList(intArray2)) ; 
  3. list2.add(2); 
  4. System.out.println(list2); 

運行結(jié)果:

  1. [nullnull, 2] 

方式三:支持增刪,且數(shù)據(jù)量大最高效

  1. Integer[] intArray3 = new Integer[2]; 
  2. List<Integer> list3 = new ArrayList<Integer>(intArray3.length); 
  3. Collections.addAll(list3, intArray3); 
  4. list3.add(3); 
  5. System.out.println(list3); 

運行結(jié)果:

  1. [nullnull, 3] 

綜上,整型Integer[]數(shù)組轉(zhuǎn)List的正確方式應(yīng)該是這樣的。

易錯點:可能出現(xiàn)的錯誤可能是這樣轉(zhuǎn)換的:

  1. int[] intArray1 = new int[2]; 
  2. List<Integer> list1 = Arrays.asList(intArray1);//此處報錯!!! 

報錯原因:等號兩邊類型不一致,當(dāng)然編譯不通過。分析見下文。

那么在聲明數(shù)組時,用int[] 還是Integer[],哪種聲明方式才能正確的轉(zhuǎn)為List呢?

答案: 只能用Integer[]轉(zhuǎn)List,即只能用基本數(shù)據(jù)類型的包裝類型,才能直接轉(zhuǎn)為List。

原因分析如下:

我們來看List在Java源碼中的定義(別害怕看不懂源碼,看我分析,很易懂的):

  1. public interface List<E> extends Collection<E> {省略…} 

再來看Arrays.asList()的在Java源碼定義:

  1. public static List asList(T... a) { 
  2. return new ArrayList<>(a); 
  • 從上述源碼中可以看出,List聲明時,需要傳遞一個泛型作為形參,asList()參數(shù)類型也是泛型中的通配類型。Java中所有的泛型必須是引用類型。
  • 什么是引用類型?Integer是引用類型,那int是什么類型?int是基本數(shù)據(jù)類型,不是引用類型。這就是為什么java中沒有List,而只有List
  • 舉一反三:其他8種基本數(shù)據(jù)類型byte、short、int、long、float、double、char也都不是引用類型,所以8種基本數(shù)據(jù)類型都不能作為List的形參。但String、數(shù)組、class、interface是引用類型,都可以作為List的形參,所以存在List接口類型的集合、List

有了上述基礎(chǔ)知識后,再來看為什么下面兩行代碼第二行能編譯通過,第三行卻編譯報錯?

  1. int[] intArray1 = new int[1];  
  2. Arrays.asList(intArray1);//編譯不報錯 
  3. List<Integer> list1 = Arrays.asList( intArray1);//編譯報錯 

答案:

  • 第二行代碼,Arrays.asList()方法的入?yún)⑹莻€引用類型的int[],那么返回值類型一定是List
  • 第三行報錯,因為等號兩邊的類型不一致,左邊:List,右邊List

總結(jié)

現(xiàn)在你應(yīng)該明白,為什么int[]不能直接轉(zhuǎn)換為List,而Integer[]就可以轉(zhuǎn)換為List了吧。因為List中的泛型必須是引用類型,int是基本數(shù)據(jù)類型,不是引用類型,但int的包裝類型Integer是class類型,屬于引用類型,所以Integer可以作為List形參,List在java中是可以存在的,但不存在List類型。

在編碼時,我們不光要知其然,還要知其所以然,通過分析JDK源碼,才能得出一手信息,不僅了解到了如何用,還能得出為何這樣用。 

 

責(zé)任編輯:龐桂玉 來源: Java團長
相關(guān)推薦

2011-01-18 15:35:59

jQueryJavaScriptweb

2012-07-17 09:16:16

SpringSSH

2018-04-02 14:29:18

Java多線程方式

2010-01-08 10:06:39

軟交換組大網(wǎng)

2021-12-20 07:11:26

Java List排序 Java 基礎(chǔ)

2009-08-04 09:09:56

Java常見異常

2023-12-25 14:44:52

Java數(shù)組

2020-11-01 17:10:46

異步事件開發(fā)前端

2019-11-20 18:52:24

物聯(lián)網(wǎng)智能照明智能恒溫器

2021-11-05 21:33:28

Redis數(shù)據(jù)高并發(fā)

2021-06-24 08:52:19

單點登錄代碼前端

2014-12-31 17:42:47

LBSAndroid地圖

2022-11-03 08:44:24

代理模式Java設(shè)計模式

2010-03-12 17:52:35

Python輸入方式

2016-09-13 14:05:24

Spark集群管理模式

2025-06-06 00:00:00

JavaHTTPMCP

2024-07-08 09:03:31

2015-01-05 09:56:20

可穿戴設(shè)備

2023-10-18 11:12:01

增強現(xiàn)實VR

2013-06-17 17:08:47

Windows PhoWP開發(fā)共享數(shù)據(jù)方式
點贊
收藏

51CTO技術(shù)棧公眾號

av电影天堂一区二区在线 | 少妇一级淫片日本| 亚洲人成网www| 欧美影院一区二区三区| 日本高清不卡三区| 99er热精品视频| 国产日本精品| 久久精品国产欧美激情| 久久福利小视频| 国产精品.xx视频.xxtv| 亚洲成人午夜影院| 天天好比中文综合网| 亚洲女同志亚洲女同女播放| 欧美中文日韩| 欧美区二区三区| 亚洲午夜久久久久久久国产| 国产成人自拍网站| 亚洲视频一起| 欧美午夜宅男影院| 缅甸午夜性猛交xxxx| 午夜看片在线免费| 久久久久黄久久免费漫画| 久久久美女毛片| 97夜夜澡人人双人人人喊| 久久亚洲精品石原莉奈| 欧美午夜久久| 日韩在线视频观看正片免费网站| 色哟哟无码精品一区二区三区| 成人国产一区二区三区精品麻豆| www.丝袜精品| 欧美裸体一区二区三区| 人妻熟女一二三区夜夜爱| 欧美hdxxx| 综合婷婷亚洲小说| 日本不卡久久| 亚洲国产精品久久久久爰色欲| 1769视频在线播放免费观看| 91在线视频18| 国产成人精品日本亚洲11| 一级黄色片免费看| 日韩经典一区二区| 欧美制服第一页| 日本少妇毛茸茸高潮| 亚洲国产一区二区在线观看| 中日韩美女免费视频网站在线观看| 亚洲国产第一区| www.成人网| 日韩欧美国产综合一区 | 99re久久精品国产| 成人av综合网| 日韩欧美国产三级电影视频| 三级av免费看| 日韩五码电影| 717成人午夜免费福利电影| 一路向西2在线观看| 97精品国产99久久久久久免费| 91福利精品视频| av网址在线观看免费| 欧美一区久久久| 色婷婷狠狠综合| 亚洲狼人综合干| 成人涩涩视频| 伊人网在线免费| 国产精品久久久久精| 久久成人免费电影| 成人美女av在线直播| 欧美一区二区三区免费视频| 蜜桃狠狠色伊人亚洲综合网站| 神马午夜精品95| 99这里只有久久精品视频| 国产精品一区二区三区免费| 亚洲精品国产精品国| av免费在线观看网址| 91美女在线观看| 日韩av中文字幕在线| 夜夜嗨av一区二区三区四区 | 337人体粉嫩噜噜噜| 欧美在线观看视频一区| 最近中文字幕日韩精品 | 日韩成人av一区二区| 午夜先锋成人动漫在线| 一区二区成人精品| 免费在线观看h片| 国产精品午夜影院| 国产精品巨作av| 国产手机视频精品| 丰满的亚洲女人毛茸茸| 婷婷亚洲最大| 国内精品久久久久伊人av| 黑人精品无码一区二区三区AV| 日韩av在线播放中文字幕| 成人国产亚洲精品a区天堂华泰| 精品国精品国产自在久不卡| 99久久久久免费精品国产| 日本高清不卡三区| 亚洲精品白浆| 一本一道波多野结衣一区二区| 色片在线免费观看| 中文字幕一区二区三区四区久久 | 视频在线观看你懂的| 中文字幕精品在线不卡| 乱熟女高潮一区二区在线| 欧美激情喷水| 精品美女被调教视频大全网站| 天天躁日日躁aaaa视频| 欧美久久九九| 国产精品免费久久久久久| 亚洲欧美另类一区| 国产精品私人影院| 777久久久精品一区二区三区| 在线成人免费| 亚洲性猛交xxxxwww| 欧美成人一区二区三区高清| 日韩中文字幕av电影| 999日本视频| 91露出在线| 欧美视频中文在线看| 一本之道在线视频| 日韩欧美视频| 日本欧美爱爱爱| 国模无码一区二区三区| 自拍偷拍亚洲欧美日韩| 99草草国产熟女视频在线| 精品午夜电影| 欧美黄色成人网| 91亚洲精品国偷拍自产在线观看 | 亚洲第一中文字幕在线观看| 四虎永久免费地址| 日韩成人午夜电影| 久久国产精品久久| 黄色污污视频在线观看| 7777精品伊人久久久大香线蕉| 日韩丰满少妇无码内射| 亚洲欧美日韩综合国产aⅴ| 国产精品亚洲视频| 一区二区日韩欧美| 在线国产电影不卡| 久久亚洲精品网站| 成年人网站在线观看视频| 欧美人与禽zozo性伦| 精品日韩久久久| 香蕉久久夜色精品国产更新时间| 欧美丰满少妇xxxxx| 国产精品毛片一区二区在线看舒淇| 久久久99免费| 欧美黑人xxxx| 欧美三区四区| 日韩av最新在线| 久热精品在线观看| 国产精品88av| 伊人久久久久久久久久久久久久| 国产伦一区二区三区| 91国内揄拍国内精品对白| www.日日夜夜| 亚洲精品免费在线播放| 美女被艹视频网站| 你懂的国产精品| 97se国产在线视频| 黄色的视频在线观看| 精品国产成人在线影院 | 美女黄色丝袜一区| 国产不卡精品视频| 亚洲午夜久久久久久久久电影网| 亚洲国产精品狼友在线观看| 亚洲国产一区二区三区a毛片| 国产九色91| 中文字幕一区久| 在线播放日韩精品| 国产麻豆免费观看| 亚洲精品中文字幕乱码三区| 亚洲精品乱码久久久久久蜜桃欧美| 亚洲三级观看| 清纯唯美一区二区三区| 自拍偷拍欧美视频| 有码中文亚洲精品| 国产伦精品一区二区三区视频痴汉| 亚洲欧美区自拍先锋| 99免费观看视频| 久久综合狠狠| 免费成人进口网站| 久久91在线| 国产精品入口尤物| 肉肉视频在线观看| 亚洲欧美国产精品va在线观看| 一区二区视频网| 一区二区三区日韩欧美| 人妻熟女aⅴ一区二区三区汇编| 日本在线不卡一区| 亚洲私拍视频| 伊人亚洲福利一区二区三区| 国产一区二区在线视频观看| 一区二区三区蜜桃网| 影音先锋黄色资源| 男人操女人的视频在线观看欧美| 久久最新免费视频| 日韩三级毛片| 成人av在线天堂| 久久久久久久香蕉网| 在线观看国产精品视频| 亚洲人精品午夜| 给我免费观看片在线电影的| 蜜桃精品在线观看| 精品视频在线观看一区| 成人毛片在线| 国产精品一区二区免费看| 99欧美精品| 国内精品久久久久久久久| av播放在线| 日韩av中文在线| a网站在线观看| 在线免费观看不卡av| 久一区二区三区| 欧美高清在线一区| 人妻在线日韩免费视频| 国产精品一区二区在线播放| 久久久久国产精品熟女影院| 亚洲国产高清一区| 日本高清xxxx| 日韩在线精品| 日本在线视频一区| 婷婷亚洲精品| 国产不卡一区二区三区在线观看| 久久精品国产福利| 国产精品成人品| 亚洲美女尤物影院| 97国产真实伦对白精彩视频8| 国产精品刘玥久久一区| 亚洲性夜色噜噜噜7777| 日本成人一区| 亚洲大尺度美女在线| www.久久久久久| 在线成人午夜影院| 在线视频精品免费| 91电影在线观看| 一区二区三区入口| 亚洲欧洲自拍| 欧美国产日产韩国视频| 午夜毛片在线| 国产亚洲美女精品久久久| 天天操天天干天天| 精品国产乱码久久| 高h放荡受浪受bl| 91精品国产91久久久久久一区二区 | 国产精品视频一区视频二区 | 国产欧美视频一区二区三区| 精品在线观看国产| 国产精品狼人色视频一区| 一区二区免费电影| 成人高清在线观看视频| 麻豆精品久久久久久久99蜜桃| 国产在线视频你懂得| 成人亚洲网站| 亚洲三级影院| 亚洲欧美日韩久久精品| 亚洲人成电影在线| 高清国产在线一区| 涩涩网站在线看| 日韩无码精品一区二区三区| 午夜在线视频| 九九精品在线| 久久久久久久国产精品影院| 欧美蜜桃一区二区三区| 中文字幕日本欧美| 国产精品欧美风情| 亚洲无吗一区二区三区| 黄片毛片在线看| 国产精品网站在线| 国产jizz18女人高潮| 自拍偷自拍亚洲精品播放| 久久久.www| 欧美视频在线免费看| 成年人视频免费| 4438成人网| 亚洲精品一区二区三区蜜桃 | av中文字幕免费| 精品福利二区三区| 巨骚激情综合| www国产91| av日韩国产| 国产精品久久久久99| 高清一区二区三区av| 成人自拍视频网站| 欧美人与拘性视交免费看| 伊人久久大香线蕉午夜av| 欧美精品三区| 免费观看精品视频| 狠狠色丁香婷综合久久| 男男做爰猛烈叫床爽爽小说| 国产精品欧美一区二区三区| 久久国产免费观看| 在线免费不卡电影| 好吊色在线观看| 少妇精69xxtheporn| av免费不卡国产观看| 国产精品自拍视频| 都市激情亚洲| 一区二区精品国产| 男人的天堂成人在线| 中文字幕55页| 国产亲近乱来精品视频| 国产乡下妇女做爰毛片| 欧美在线三级电影| 色婷婷av一区二区三| 日韩在线观看免费全| 成人观看网址| 亚洲影院色无极综合| 妖精一区二区三区精品视频| 黄色特一级视频| 日韩va欧美va亚洲va久久| 精品国产aⅴ一区二区三区东京热 久久久久99人妻一区二区三区 | 天天操天天干天天爽| 日韩在线视频观看正片免费网站| 蜜臀久久精品| av资源站久久亚洲| 99久久99久久精品国产片桃花| 97国产精东麻豆人妻电影 | 少妇真人直播免费视频| 亚洲一二三四区不卡| 91成人国产综合久久精品| 亚洲视频国产视频| 午夜影院一区| 国产98在线|日韩| 欧美搞黄网站| 亚洲精品中文字幕乱码无线| 亚洲国产精品高清| 五月天综合激情网| 精品福利一二区| 人妖欧美1区| 亚洲综合在线中文字幕| 91精品综合久久久久久久久久久| 国产又黄又猛视频| 91在线视频在线| 自拍偷拍欧美亚洲| 精品国产乱码久久久久久免费| а√资源新版在线天堂| 成人网在线免费观看| 久久视频精品| 亚洲精品综合在线观看| 国产精品久久久久久久蜜臀| 波多野结衣黄色| 一个色综合导航| 黄色精品视频网站| 亚洲国产精品一区在线观看不卡| 久久久久久黄| 免费观看av网站| 精品久久久国产| 五月婷婷六月激情| 777午夜精品福利在线观看| 国产高清亚洲| 99久久99久久精品| 国产成人高清视频| 国产一级二级三级视频| 日韩一区二区三区视频在线| 成人日批视频| 福利视频一区二区三区| 欧美午夜在线| av免费观看不卡| 亚洲18女电影在线观看| 天天综合网在线| 奇米影视亚洲狠狠色| 精品国产美女| 波多结衣在线观看| 国产精品麻豆欧美日韩ww| 一级特黄录像免费看| 久久精品福利视频| 日韩av综合| 男女超爽视频免费播放| 99久久综合精品| 久久精品五月天| 久久久精品国产亚洲| 日韩在线精品强乱中文字幕| 国产欧美日韩网站| 久久久亚洲综合| 中文字幕免费播放| 欧美www在线| 色橹橹欧美在线观看视频高清| 成人在线观看黄| 亚洲精品写真福利| 头脑特工队2免费完整版在线观看| 欧美在线精品免播放器视频| 国产福利一区二区精品秒拍| 九色在线视频观看| 日本一区二区三区四区在线视频| 亚洲天堂手机在线| 久久99视频免费| 日韩欧美黄色| 日本一二三四区视频| 亚洲国产一区二区视频| 免费看男男www网站入口在线| 欧美在线一级视频| 久久精品国内一区二区三区水蜜桃| 日本55丰满熟妇厨房伦| 色综合久久88色综合天天免费| 免费观看国产视频| 国产精品三级久久久久久电影| 黄色亚洲在线| 黄瓜视频污在线观看| 欧美一区二区福利在线| 一区二区电影免费观看| 黄色网址在线免费看|