Java中怎么把數(shù)組轉(zhuǎn)換為ArrayList,針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。
創(chuàng)新互聯(lián)建站是一家專注于成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、成都外貿(mào)網(wǎng)站建設(shè)與策劃設(shè)計(jì),偏關(guān)網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)建站做網(wǎng)站,專注于網(wǎng)站建設(shè)十余年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:偏關(guān)等地區(qū)。偏關(guān)做網(wǎng)站價(jià)格咨詢:028-86922220
1.最流行也是被最多人接受的答案
最普遍也是被最多人接受的答案如下:
ArrayList
首先,我們來(lái)看下ArrayList的構(gòu)造方法的文檔。
ArrayList(Collection < ? extends E > c) : 構(gòu)造一個(gè)包含特定容器的元素的列表,并且根據(jù)容器迭代器的順序返回。
所以構(gòu)造方法所做的事情如下:
1.將容器c轉(zhuǎn)換為一個(gè)數(shù)組
2.將數(shù)組拷貝到ArrayList中稱為”elementData”的數(shù)組中
ArrayList的構(gòu)造方法的源碼如下:
public ArrayList(Collection extends E> c) { elementData = c.toArray(); size = elementData.length; if (elementData.getClass() != Object[].class) elementData = Arrays.copyOf(elementData, size, Object[].class);}
2.另外一個(gè)流行的答案
另外一個(gè)流行的答案是:
List
這不是最好的,因?yàn)閍sList()返回的列表的大小是固定的。事實(shí)上,返回的列表不是java.util.ArrayList,而是定義在java.util.Arrays中一個(gè)私有靜態(tài)類。我們知道ArrayList的實(shí)現(xiàn)本質(zhì)上是一個(gè)數(shù)組,而asList()返回的列表是由原始數(shù)組支持的固定大小的列表。這種情況下,如果添加或刪除列表中的元素,程序會(huì)拋出異常UnsupportedOperationException。
list.add(new Element(4));
Exception in thread "main" java.lang.ClassCastException: java.util.Arrays$ArrayList cannot be cast to java.util.ArrayList at collection.ConvertArray.main(ConvertArray.java:22)
3.又一個(gè)解決方案
這個(gè)解決方案由Otto提供
Element[] array = {new Element(1), new Element(2)};List
4.該問(wèn)題的表明的東西
這個(gè)問(wèn)題不難,但卻很有趣。每個(gè)Java程序員都知道ArrayList,但卻很容易犯下這樣的錯(cuò)誤。我想這就是這個(gè)問(wèn)題很火的原因吧。如果是一個(gè)特定領(lǐng)域的Java庫(kù)的相似的問(wèn)題,就遠(yuǎn)不會(huì)這樣火熱了。
這個(gè)問(wèn)題有好多答案提供了相同的解決方案,對(duì)于StackOverflow的其他問(wèn)題也是這樣。我猜想當(dāng)人們想要回答一個(gè)問(wèn)題時(shí),是不會(huì)管別人說(shuō)了什么的。
關(guān)于Java中怎么把數(shù)組轉(zhuǎn)換為ArrayList問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。