亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Java > 正文

Java中List與數組相互轉換實例分析

2019-11-26 15:11:15
字體:
來源:轉載
供稿:網友

本文實例分析了Java中List與數組相互轉換的方法。分享給大家供大家參考。具體如下:

今天寫代碼遇到一個奇怪的問題,具體代碼不貼出了,寫一個簡化的版本。如下:

ArrayList<String> list=new ArrayList<String>();String strings[]=(String [])list.toArray();

這樣寫代碼個人覺得應該沒什么問題,編譯也沒有問題??墒蔷唧w運行的時候報異常,如下:Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object;

但是這么寫是沒有問題的:

ArrayList<String> list=new ArrayList<String>();String strings[]=new String[list.size()];for(int i=0,j=list.size();i<j;i++){  strings[i]=list.get(i);}

對于這個現象我們可以這么解釋:Java中允許向上和向下轉型,但是這個轉型是否成功是根據Java虛擬機中這個對象的類型來實現的。Java虛擬機中保存了每個對象的類型。而數組也是一個對象。數組的類型[Ljava.lang.Object。把[Ljava.lang.Object轉換成[Ljava.lang.String是顯然不可能的事情,因為這里是一個向下轉型,而虛擬機只保存了這是一個Object的數組,不能保證數組中的元素是String的,所以這個轉型不能成功。數組里面的元素只是元素的引用,不是存儲的具體元素,所以數組中元素的類型還是保存在Java虛擬機中的。

根據上面的解釋,我們可以把這個問題歸納到下面這個模型:

Object objs[]=new Object[10];String strs[]=(String[])objs;

這樣子和剛才上面編譯錯誤是一樣的。如果我們修改一下這個代碼,如下:

String strs[]=new String[10];Object objs[]=strs;

這樣子就可以編譯通過了。所以這個問題我們可以歸結為一個Java轉型規則的問題。下面談一下Java數組對范型的支持問題。

JDK5中已經有了對范型的支持,這樣可以保證在集合和Map中的數據類型的安全,可是,List的toArray方法返回的竟然是Object []讓人很迷惑。個人感覺應該可以根據范型,直接返回相應的T []。仔細看了一下JDK的源碼發現List轉化為array有兩個方法:

public Object[] toArray();

這個方法把List中的全部元素返回一個相同大小的數組,數組中的所有元素都為Object類型。

public <T> T[] toArray(T[] a);

這個方法把List中的全部元素返回一個相同大小的數組,數組中的所有元素都為T類型。

List如此設計是因為java編譯器不允許我們new范型數組。也就是說你不能這么定義一個數組:

T arr=new T[size];

但是你卻可以用T[]來表示數組,而且可以把數組強制轉化為T[]。比如List中的public <T> T[] toArray(T[] a)是這么實現的:

public <T> T[] toArray(T[] a) { if (a.length < size)   a = (T[])java.lang.reflect.Array.newInstance(a.getClass().getComponentType(), size);   System.arraycopy(elementData, 0, a, 0, size); if (a.length > size)   a[size] = null; return a;}

從上面代碼中可以看到,因為你不知道這個數組的類型,你必須通過反射機制創建這個數組(a.getClass().getComponentType()方法是取得一個數組元素的類型)。
最終,List轉換為Array可以這樣處理:

ArrayList<String> list=new ArrayList<String>();String[] strings = new String[list.size()];list.toArray(strings);

反過來,如果要將數組轉成List怎么辦呢?如下:

String[] s = {"a","b","c"};List list = java.util.Arrays.asList(s);

希望本文所述對大家的java程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
一区二区在线视频播放| 97在线看福利| 国产精品久久久久久久av大片| 91在线免费视频| 国产精品99久久久久久www| 欧美午夜视频在线观看| 美日韩精品免费视频| 国产成人欧美在线观看| 668精品在线视频| 国产精品久久久久久久久久尿| 中文字幕在线视频日韩| 欧美午夜精品在线| 91天堂在线视频| 国产精品99久久久久久久久久久久| 亚洲精品免费网站| 91香蕉嫩草影院入口| 久久青草福利网站| 国产免费久久av| 成人羞羞国产免费| 亚洲成年人在线播放| 精品久久久一区| 久久精品亚洲热| 亚洲www永久成人夜色| 精品中文字幕在线观看| 国产日韩欧美日韩大片| 欧美精品在线观看91| 久久69精品久久久久久久电影好| 亚洲欧美精品在线| 欧美最猛性xxxxx(亚洲精品)| 97久久精品人搡人人玩| 国产精品亚发布| 中文字幕成人精品久久不卡| 中文字幕国产亚洲| 亚洲综合成人婷婷小说| 69**夜色精品国产69乱| 久久久久国产精品免费网站| 中文字幕久久久| 日本精品免费一区二区三区| 国产欧美日韩中文字幕在线| 日韩欧美极品在线观看| 欧美激情在线播放| 欧美日韩国产成人在线| 性欧美视频videos6一9| 国产精品丝袜久久久久久高清| 国产精品福利久久久| 欧洲午夜精品久久久| 国产成人啪精品视频免费网| 日本欧美黄网站| 久久久久久国产精品三级玉女聊斋| 色999日韩欧美国产| 国产精品成人av在线| 亚洲毛片在线观看.| 日韩欧美在线中文字幕| 成人在线中文字幕| 久久久久久久网站| 亚洲人成欧美中文字幕| 日韩欧美在线视频| 日韩亚洲欧美中文高清在线| 亚洲黄色www网站| 亚洲精品一区二区三区不| 亚洲欧美国产精品久久久久久久| 亚洲xxxx在线| 亚洲激情在线视频| 亚洲丁香久久久| 青草青草久热精品视频在线网站| 亚洲va电影大全| 国产精品美女www| 久久天天躁狠狠躁夜夜躁2014| 亚洲天堂av在线播放| 国产成人免费av电影| 国模精品一区二区三区色天香| 成人黄色片在线| 精品国产乱码久久久久久婷婷| 97视频在线免费观看| 欧美电影免费观看高清完整| 日韩国产精品视频| 日韩有码片在线观看| 日韩精品在线免费播放| 国产精品对白刺激| 久久久久国色av免费观看性色| 亚洲成人av中文字幕| 中文国产成人精品久久一| 欧美精品做受xxx性少妇| 亚洲精品综合精品自拍| 1769国内精品视频在线播放| 91sa在线看| 亚洲综合视频1区| 2019中文在线观看| 欧美激情综合色| 久久亚洲私人国产精品va| 久久精品99无色码中文字幕| 96精品久久久久中文字幕| 国产精品免费一区二区三区都可以| 午夜剧场成人观在线视频免费观看| 欧美性猛交xxxx乱大交极品| 97精品视频在线| 久久这里只有精品视频首页| 色伦专区97中文字幕| 国产欧美韩国高清| 主播福利视频一区| 久久国产精品久久久久久| 红桃av永久久久| 日韩国产欧美精品在线| 亚洲国产天堂久久综合网| 中日韩美女免费视频网址在线观看| 欧美日韩国产色视频| 国产精品久久久久久超碰| 欧美在线免费看| 激情亚洲一区二区三区四区| 日韩av不卡在线| 亚洲精品av在线播放| 亚洲国产精彩中文乱码av| 欧美视频二区36p| 韩国日本不卡在线| 青青青国产精品一区二区| 精品一区二区三区三区| 日韩精品极品在线观看| 麻豆乱码国产一区二区三区| 热久久视久久精品18亚洲精品| 亚洲激情小视频| 日韩中文综合网| 欧美激情视频一区| 日韩欧美在线视频日韩欧美在线视频| 日本精品久久久| 亚洲sss综合天堂久久| 成人黄色中文字幕| 国产成人小视频在线观看| 日韩视频亚洲视频| 国产精品美女免费视频| 亚洲第一区第二区| 国产精品9999| 成人午夜在线影院| 久久久精品亚洲| 国色天香2019中文字幕在线观看| 国产成人综合久久| 欧美成人精品h版在线观看| 欧美激情xxxxx| 亚洲欧洲激情在线| 久久免费高清视频| 亚洲综合最新在线| 国产91色在线播放| 国产有码一区二区| 久久中文字幕在线视频| 亚洲欧美资源在线| 日韩在线一区二区三区免费视频| 国产精品露脸自拍| 中文字幕自拍vr一区二区三区| 久久视频这里只有精品| 亚洲欧美国产精品专区久久| 欧美一区第一页| 在线观看日韩www视频免费| 久久夜精品va视频免费观看| 97国产suv精品一区二区62| 欧美一区二区三区四区在线| 日韩成人黄色av| 538国产精品一区二区免费视频| 日韩精品视频免费专区在线播放| 欧美成人免费视频| 91免费综合在线| 91久久精品视频| 少妇精69xxtheporn| 欧美激情久久久久久| 久久久亚洲欧洲日产国码aⅴ| 久久精品中文字幕免费mv|