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 一堣而安 閱讀(261) 評(píng)論(0)  編輯  收藏 所屬分類: java

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          收藏夾

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 泸水县| 固始县| 改则县| 图们市| 旌德县| 襄城县| 大庆市| 定边县| 榆中县| 达尔| 全椒县| 宁乡县| 南岸区| 渝中区| 安阳县| 曲松县| 南华县| 永川市| 巩留县| 苗栗市| 辽宁省| 奉节县| 集贤县| 高清| 大安市| 英吉沙县| 晋中市| 宾阳县| 灵璧县| 邮箱| 康保县| 苗栗市| 双峰县| 莱州市| 钟山县| 肃宁县| 荃湾区| 沧州市| 醴陵市| 彩票| 公主岭市|