在Java中將數(shù)組轉(zhuǎn)換為L(zhǎng)ist的方式有哪些?相信很多沒(méi)有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問(wèn)題出現(xiàn)的原因和解決方法,通過(guò)這篇文章希望你能解決這個(gè)問(wèn)題。
成都創(chuàng)新互聯(lián)公司專(zhuān)注于蘭考企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站設(shè)計(jì),商城開(kāi)發(fā)。蘭考網(wǎng)站建設(shè)公司,為蘭考等地區(qū)提供建站服務(wù)。全流程按需求定制網(wǎng)站,專(zhuān)業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)公司專(zhuān)業(yè)和態(tài)度為您提供的服務(wù)Java是什么Java是一門(mén)面向?qū)ο缶幊陶Z(yǔ)言,可以編寫(xiě)桌面應(yīng)用程序、Web應(yīng)用程序、分布式系統(tǒng)和嵌入式系統(tǒng)應(yīng)用程序。
一.最常見(jiàn)方式(未必最佳)
通過(guò) Arrays.asList(strArray)
方式,將數(shù)組轉(zhuǎn)換List后,不能對(duì)List增刪,只能查改,否則拋異常。
關(guān)鍵代碼:List list = Arrays.asList(strArray);
private void testArrayCastToListError() { String[] strArray = new String[2]; List list = Arrays.asList(strArray); //對(duì)轉(zhuǎn)換后的list插入一條數(shù)據(jù) list.add("1"); System.out.println(list); }
執(zhí)行結(jié)果:
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
類(lèi)中一個(gè)私有靜態(tài)內(nèi)部類(lèi)java.util.Arrays.ArrayList
,它并非java.util.ArrayList
類(lèi)。java.util.Arrays.ArrayList
類(lèi)具有 set()
,get()
,contains()
等方法,但是不具有添加add()
或刪除remove()
方法,所以調(diào)用add()
方法會(huì)報(bào)錯(cuò)。
使用場(chǎng)景:Arrays.asList(strArray)
方式僅能用在將數(shù)組轉(zhuǎn)換為L(zhǎng)ist后,不需要增刪其中的值,僅作為數(shù)據(jù)源讀取使用。
二.數(shù)組轉(zhuǎn)為L(zhǎng)ist后,支持增刪改查的方式
通過(guò)ArrayList的構(gòu)造器,將Arrays.asList(strArray)
的返回值由java.util.Arrays.ArrayList
轉(zhuǎn)為java.util.ArrayList
。
關(guān)鍵代碼:ArrayList
private void testArrayCastToListRight() { String[] strArray = new String[2]; ArrayListlist = new ArrayList (Arrays.asList(strArray)) ; list.add("1"); System.out.println(list); }
執(zhí)行結(jié)果:成功追加一個(gè)元素“1”。
[null, null, 1]
使用場(chǎng)景:需要在將數(shù)組轉(zhuǎn)換為L(zhǎng)ist后,對(duì)List進(jìn)行增刪改查操作,在List的數(shù)據(jù)量不大的情況下,可以使用。
三.通過(guò)集合工具類(lèi)Collections.addAll()方法(最高效)
通過(guò)Collections.addAll(arrayList, strArray)
方式轉(zhuǎn)換,根據(jù)數(shù)組的長(zhǎng)度創(chuàng)建一個(gè)長(zhǎng)度相同的List,然后通過(guò)Collections.addAll()
方法,將數(shù)組中的元素轉(zhuǎn)為二進(jìn)制,然后添加到List中,這是最高效的方法。
關(guān)鍵代碼:
ArrayList< String> arrayList = new ArrayList(strArray.length); Collections.addAll(arrayList, strArray);
測(cè)試:
private void testArrayCastToListEfficient(){ String[] strArray = new String[2]; ArrayList< String> arrayList = new ArrayList(strArray.length); Collections.addAll(arrayList, strArray); arrayList.add("1"); System.out.println(arrayList); }
執(zhí)行結(jié)果:同樣成功追加一個(gè)元素“1”。
[null, null, 1]
使用場(chǎng)景:需要在將數(shù)組轉(zhuǎn)換為L(zhǎng)ist后,對(duì)List進(jìn)行增刪改查操作,在List的數(shù)據(jù)量巨大的情況下,優(yōu)先使用,可以提高操作速度。
注:附上Collections.addAll()
方法源碼:
public staticboolean addAll(Collection super T> c, T... elements) { boolean result = false; for (T element : elements) result |= c.add(element);//result和c.add(element)按位或運(yùn)算,然后賦值給result return result; }
看完上述內(nèi)容,你們掌握在Java中將數(shù)組轉(zhuǎn)換為L(zhǎng)ist的方式有哪些的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!