posts - 5, comments - 24, trackbacks - 0, articles - 20
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          ArrayList的用法

          Posted on 2006-09-24 22:31 kook 閱讀(1950) 評論(1)  編輯  收藏 所屬分類: J2SE

          他是List接口的實現類。ArrayList類相當于是一個動態數組。

          Methods:

          1、? void add Object obj

          ArrayList的對象里增加一個元素

          2、? set (int?index, Object ?element)

          用指定的元素替代此列表中指定位置上的元素。

          3、? int size ()

          獲得ArrayList的對象中元素的個數。

          4、? get int index)

          返回ArrayList的對象中索引為index的元素。

          5、? Object [] toArray ()

          ArrayList的對象中的元素返回到一個對象數組中。

          PS Arrays.asList(Object[] objs);

          ??? 返回一個受指定數組支持的固定大小的列表。

          ?1 ArrayList?al? = ? new ?ArrayList();
          ?2
          ????????
          ?3 ????????al.add( new ?Point( 3 , 3
          ));
          ?4 ????????al.add( new ?Point( 4 , 4
          ));
          ?5 ????????al.add( new ?Point( 5 , 5
          ));
          ?6
          ????????
          ?7 ????????
          /* for(int?i=0;i<al.size();i++)
          ?8
          ????????{
          ?9
          ????????????System.out.println(al.get(i));
          10 ????????} */

          11 ????????
          12
          ????????System.out.println(al);
          13 ????????Object[]?objs? =
          ?al.toArray();
          14
          ????????System.out.println(Arrays.toString(objs));
          15 ????????List?L? =
          ?Arrays.asList(objs);
          16

          ???? 這里的L是通過Arrays.asList返回一個接口。這時候L的長度就固定不能再變了,不能給L添加元素了。但是可以通過set方法改變L中指定元素的值。

          ????? ? toArray 方法是將一個List對象轉成一個數組,而Arrays.asList方法是將一個數組轉成一個List。他們是集合和數組之間的橋梁,有時候方法中的參數可能需要數組或者List的時候,就可以用到他們轉換,而不用去重新創建實例。

          6、? iterator()

          返回一個迭代器。所有繼承Collection接口的接口或者這些接口的實現類,都有這個方法。通過List接口對象返回的迭代器沒有實現iterator接口中的remove方法。凡是沒有實現iterator接口中的remove方法,都會拋出一個 UnsupportedOperationException (不支持的操作)異常。如:

          ?

          1 List?l? = ? null ;??????????????? // List?接口對象l?
          2
          3 Iterator?it? = ?l.iterator();?? // ?通過List接口對象l返回的迭代器it?
          4
          5 it.next();??????????????????? // it?有next方法?
          6
          7 it.remove();???????????????????? // ?這里會拋出?UnsupportedOperationException?
          8
          9


          PS :迭代器的作用:

          ?? 他可以以一種通用的方式去訪問集合中的所有元素。在ArrayList類中可以通過get方法去訪問,但是有些集合的實現類中并沒有get方法。而我們知道,所有繼承Collection接口的接口或者這些接口的實現類,都可以通過iterator()返回一個迭代器,那么我們就可以通過迭代器這種通用的方式去訪問集合中的所有元素了。訪問方法如下:

          ?1 ArrayList?al? = ? new ?ArrayList();?
          ?2

          ?3 ????al.add( new ?Point( 3 , 3
          ));?
          ?4

          ?5 ????al.add( new ?Point( 4 , 4
          ));?
          ?6

          ?7 ????al.add( new ?Point( 5 , 5
          ));?
          ?8

          ?9 Iterator?it1? =
          ?al.iterator();?
          10

          11 ??????? while (it.hasNext())????????????????????? // ?通過迭代器訪問集合元素?

          12 ??????? {?
          13
          ??????????????System.out.println(it.next());?
          14 ???????}
          ?
          15


          ArrayList 底層采用數組完成,而LinkedList則是以一般的雙向鏈表(double-linked list)完成,其內每個對象除了數據本身外,還有兩個引用,分別指向前一個元素和后一個元素。

          如果我們經常在List的開始處增加元素,或者在List中進行插入和刪除操作,我們應該使用LinkedList,否則的話,使用ArrayList將更加快速。

          這兩個類都不是同步的,因此他們的效率也比較高。如果要實現同步,可以使用Vector類,Vector類中有一些繼承的操作,使用的時候要小心,如果不實現同步一般都不用Vector類。還可以用Collections類的 synchronized 相關方法實現同步,不過效率沒有 Vector 類高。


          評論

          # Seo Services  回復  更多評論   

          2009-05-18 06:01 by Seo Services
          Excuse me. Assuming either the Left Wing or the Right Wing gained control of the country, it would probably fly around in circles.
          I am from Nepal and now study English, tell me right I wrote the following sentence: "If seo process is not constantly going on then the site can be wiped.Create a informational website presence with upto pages."

          Thank you so much for your future answers ;-). Anders.

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 汉寿县| 寿阳县| 阳朔县| 孝昌县| 财经| 景谷| 和田市| 维西| 富宁县| 房产| 巴林左旗| 普洱| 噶尔县| 嫩江县| 海晏县| 池州市| 南汇区| 阿拉善盟| 大英县| 天津市| 沂源县| 文昌市| 卓尼县| 泰顺县| 饶平县| 长武县| 和龙市| 石门县| 南部县| 万山特区| 达拉特旗| 调兵山市| 舒兰市| 鸡泽县| 沙田区| 甘肃省| 丹凤县| 东兰县| 石棉县| 姜堰市| 崇文区|