麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發 > Java > 正文

Java中數組轉List的三種方法與對比分析

2024-07-14 08:41:27
字體:
來源:轉載
供稿:網友

前言:

本文介紹Java中數組轉為List三種情況的優劣對比,以及應用場景的對比,以及程序員常犯的類型轉換錯誤原因解析。

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

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

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

private void testArrayCastToListError() {  String[] strArray = new String[2];  List list = Arrays.asList(strArray);  //對轉換后的list插入一條數據  list.add("1");  System.out.println(list); }

執行結果:

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

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

原因解析: 

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

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

二.數組轉為List后,支持增刪改查的方式

通過ArrayList的構造器,將Arrays.asList(strArray)的返回值由java.util.Arrays.ArrayList轉為java.util.ArrayList 

關鍵代碼:ArrayList<String> list = new ArrayList<String>(Arrays.asList(strArray)) ;

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

執行結果:成功追加一個元素“1”。

[null, null, 1]

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

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

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

關鍵代碼:

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

測試:

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

執行結果:同樣成功追加一個元素“1”。

[null, null, 1]

使用場景:需要在將數組轉換為List后,對List進行增刪改查操作,在List的數據量巨大的情況下,優先使用,可以提高操作速度。

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

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

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,如果有疑問大家可以留言交流,謝謝大家對VeVb武林網的支持。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 欧美黄色大片免费观看 | 欧美一级电影网 | 国产在线欧美日韩 | 欧美一级免费看 | 91短视频在线视频 | h色视频网站 | 久久久久久久久久91 | 2021狠狠操 | 日韩欧美激情视频 | 在线观看91精品 | 欧美日韩大片在线观看 | 亚洲一级片在线观看 | 色淫网站免费视频 | 欧美黄成人免费网站大全 | 国产一级免费av | 看免费黄色一级片 | 久久99精品久久久久久小说 | 久久久久999 | 国产精品久久久久久久久久久久午夜 | 日日夜av | 一区二区三区欧美日韩 | 羞羞草视频 | 欧美日韩国产一区二区三区在线观看 | 午夜视频成人 | 国产1区在线 | 爽毛片| 精品一区二区免费 | 3xxx| 亚洲第一综合色 | 国产三级三级三级三级 | 日本a∨精品中文字幕在线 欧美1—12sexvideos | 龙床上的呻吟高h | 日韩蜜桃视频 | 污片视频在线观看 | fc2成人免费人成在线观看播放 | 成人在线观看免费爱爱 | 免费毛片随便看 | 精品国产一区二区三区天美传媒 | 99精品在线观看 | 亚洲福利在线免费观看 | 久久久www成人免费毛片 |