DANCE WITH JAVA

          開發(fā)出高質量的系統(tǒng)

          常用鏈接

          統(tǒng)計

          積分與排名

          好友之家

          最新評論

          Java中的容器 ArrayList

          Java中的容器 ArrayList
          學習、使用java中的容器,應改了解以下這些問題
          1,容器的作用
          2,與其它容器的區(qū)別
          3,知識點

          先說一:(作用是簡單的,到處都能看到,不詳說)
          首先要知到容器的作用,知到了作用才能開始使用它,首先我們應改知到ArrayList是一個容器,你可以往里邊
          放任何的object(object的意思就使說基礎類型不行了,不過可以放基礎類型對應的類).所以當你有很多對象
          須要保存的時候,可以選擇它)

          二:這個是比較總要的,因為學會使用一個容器是很容易的,恰當的使用才是重要的。
          對比Hashet ArrayList LinkedList
          這些都是比較常見的,在什么情況下選擇哪個呢,那首先了解一下他們的實現
          HashSet基于HashMap的,HashMap是利用hash表實現的一個key-value的映射
          LinkedList是基于鏈表的。
          ArrayList是基于數組的

          ????優(yōu)點????????????????????? 缺點
          HashSet??? 保正無重復,隨機讀取快???????? 插入時消耗大,無序
          ArrayList? 插入快,按照index讀取快?? ?刪除或者無序插入慢
          LinkedList 插入,刪除快??????? 隨機讀取慢
          知到了上邊的這些,那么我們就可以來選擇了。根據自己的需求,選擇相應的容器

          三:每個類庫的使用,都有一些須要注意的地方,用的好了能夠優(yōu)化性能。首先看一下ArrayList的實現
          實現里邊有個重要的函數,就使在長度不夠的時候的擴充和無參構造函數
          public ArrayList() {
          ?this(10);
          ??? }
          無參構造函數告訴我們,默認ArrayList的長度是10個???
          public void ensureCapacity(int minCapacity) {
          ?modCount++;
          ?int oldCapacity = elementData.length;
          ?if (minCapacity > oldCapacity) {
          ???? Object oldData[] = elementData;
          ???? int newCapacity = (oldCapacity * 3)/2 + 1;
          ??? ???? if (newCapacity < minCapacity)
          ??newCapacity = minCapacity;
          ???? elementData = (E[])new Object[newCapacity];
          ???? System.arraycopy(oldData, 0, elementData, 0, size);
          ?}
          }
          擴充函數告訴我們擴充的算法是(oldCapacity * 3)/2 + 1
          同時,如果我們在使用ArrayList的時候知到了須要存放的對象的個數,在初始化ArrayList的是否,不妨加上
          參數new ArrrayList(200);這樣,ArrayList不許要一次次的擴充,一次次的拷貝,對性能提高是有幫助的。

          然後看到jdk1.5中添加的新東西,其實應改不算新了。很像c++中的template
          jdk1.5中加入了泛型,如下使用。
          ArrayList<String> strList = new ArrayList<String>();
          另外如果想更深入的了解泛型,候捷有一篇文章,講的很詳細
          google 候捷 jdk1.5 泛型 就能找到

          ?

          posted on 2006-11-03 14:55 dreamstone 閱讀(1315) 評論(0)  編輯  收藏 所屬分類: jdk相關

          主站蜘蛛池模板: 清河县| 桂阳县| 台南市| 柳州市| 海伦市| 揭阳市| 静乐县| 舟山市| 黔江区| 兴宁市| 邵武市| 湖北省| 深圳市| 抚顺县| 清原| 义马市| 夏津县| 崇仁县| 丰原市| 洛宁县| 镇原县| 嵊州市| 马山县| 汉中市| 微博| 昔阳县| 登封市| 肇庆市| 兴安县| 渭南市| 大荔县| 若羌县| 佛坪县| 黔西县| 道孚县| 连江县| 彭泽县| 杨浦区| 苗栗县| 宁强县| 衡东县|