tinguo002

           

          ArrayList的toArray(轉(zhuǎn))


          http://www.cnblogs.com/ihou/archive/2012/05/10/2494578.html

          ArrayList提供了一個(gè)將List轉(zhuǎn)為數(shù)組的一個(gè)非常方便的方法toArray。toArray有兩個(gè)重載的方法:

          1.list.toArray();

          2.list.toArray(T[]  a);

          對(duì)于第一個(gè)重載方法,是將list直接轉(zhuǎn)為Object[] 數(shù)組;

          第二種方法是將list轉(zhuǎn)化為你所需要類型的數(shù)組,當(dāng)然我們用的時(shí)候會(huì)轉(zhuǎn)化為與list內(nèi)容相同的類型。

          不明真像的同學(xué)喜歡用第一個(gè),是這樣寫:

          1
          2
          3
          4
          5
          6
          7
          ArrayList<String> list=new ArrayList<String>();
                  for (int i = 0; i < 10; i++) {
                      list.add(""+i);
                  }
                 
                  String[] array= (String[]) list.toArray();
                

          結(jié)果一運(yùn)行,報(bào)錯(cuò):

          Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;

          原因一看就知道了,不能將Object[] 轉(zhuǎn)化為String[].轉(zhuǎn)化的話只能是取出每一個(gè)元素再轉(zhuǎn)化,像這樣:

          1
          2
          3
          4
          5
          Object[] arr = list.toArray();
                  for (int i = 0; i < arr.length; i++) {
                      String e = (String) arr[i];
                      System.out.println(e);
                  }

          所以第一個(gè)重構(gòu)方法就不是那么好使了。

          實(shí)際上,將list世界轉(zhuǎn)化為array的時(shí)候,第二種重構(gòu)方法更方便,用法如下:

          1
          2
          String[] array =new String[list.size()];
                  list.toArray(array);<br><br>另附,兩個(gè)重構(gòu)方法的源碼:

          1.
          public Object[] toArray(); {
          Object[] result = new Object[size];
          System.arraycopy(elementData, 0, result, 0, size);;
          return result;
          }

          2.

          public Object[] toArray(Object a[]); {
          if (a.length < size);
          a = (Object[]);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;
          }

          1
          <br><br>
          1
          2
          <br>
            


          歡迎大家訪問我的個(gè)人網(wǎng)站 萌萌的IT人

          posted on 2013-07-04 11:52 一堣而安 閱讀(254) 評(píng)論(0)  編輯  收藏 所屬分類: java

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          收藏夾

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 雷州市| 台东县| 商南县| 武宁县| 轮台县| 罗平县| 台北市| 通许县| 波密县| 米林县| 金华市| 绥棱县| 临猗县| 卢湾区| 靖江市| 崇明县| 怀安县| 南和县| 东乡族自治县| 常州市| 阜新| 砚山县| 冷水江市| 普宁市| 永吉县| 洛南县| 福鼎市| 鸡泽县| 肇庆市| 石泉县| 全南县| 北碚区| 镶黄旗| 铅山县| 金阳县| 榆树市| 阿拉善盟| 新邵县| 沙雅县| 宜川县| 策勒县|