<ruby id="h6500"><table id="h6500"></table></ruby>
    1. <ruby id="h6500"><video id="h6500"></video></ruby>
          1. <progress id="h6500"><u id="h6500"><form id="h6500"></form></u></progress>
            • 軟件測試技術(shù)
            • 軟件測試博客
            • 軟件測試視頻
            • 開(kāi)源軟件測試技術(shù)
            • 軟件測試論壇
            • 軟件測試沙龍
            • 軟件測試資料下載
            • 軟件測試雜志
            • 軟件測試人才招聘
              暫時(shí)沒(méi)有公告

            字號: | 推薦給好友 上一篇 | 下一篇

            Java列表對象的性能分析和測試

            發(fā)布: 2011-1-20 09:25 | 作者: 不詳 | 來(lái)源: 領(lǐng)測軟件測試網(wǎng) | 查看: 139次 | 進(jìn)入軟件測試論壇討論

            領(lǐng)測軟件測試網(wǎng)

              Java列表對象的性能分析和測試   軟件測試

              SDK提供了有序集合接口java.util.List的幾種實(shí)現,其中三種最為人們熟知的是Vector、ArrayList和LinkedList。有關(guān)這些List類(lèi)的性能差別是一個(gè)經(jīng)常被問(wèn)及的問(wèn)題。在這篇文章中,我要探討的就是LinkedList和Vector/ArrayList之間的性能差異。

              為全面分析這些類(lèi)之間的性能差異,我們必須知道它們的實(shí)現方法。因此,接下來(lái)我首先從性能的角度出發(fā),簡(jiǎn)要介紹這些類(lèi)的實(shí)現特點(diǎn)。

              一、Vector和ArrayList的實(shí)現

              Vector和ArrayList都帶有一個(gè)底層的Object[]數組,這個(gè)Object[]數組用來(lái)保存元素。通過(guò)索引訪(fǎng)問(wèn)元素時(shí),只需簡(jiǎn)單地通過(guò)索引訪(fǎng)問(wèn)內部數組的元素: public Object get(int index)

              { // 首先檢查index是否合法...此處不顯示這部分代碼 return

              elementData[index]; }

              內部數組可以大于Vector/ArrayList對象擁有元素的數量,兩者的差值作為剩余空間,;便實(shí)現快速添加新元素。有了剩余空間,添加元素變得非常簡(jiǎn)單,只需把新的元素保存到內部數組中的一個(gè)空余的位置,然后為新的空余位置增加索引值: public boolean add(Object o)

              { ensureCapacity(size + 1); // 稍后介紹 elementData[size++] = o; return true;

              // List.add(Object) 的返回值 }

              把元素插入集合中任意指定的位置(而不是集合的末尾)略微復雜一點(diǎn):插入點(diǎn)之上的所有數組元素都必須向前移動(dòng)一個(gè)位置,然后才能進(jìn)行賦值: public void add(int index, Object element) {

              // 首先檢查index是否合法...此處不顯示這部分代碼

              ensureCapacity(size+1);

              System.arraycopy(elementData, index, elementData, index + 1,

              size - index);

              elementData[index] = element;

              size++;

              }

              剩余空間被用光時(shí),如果需要加入更多的元素,Vector/ArrayList對象必須用一個(gè)更大的新數組替換其內部Object[]數組,把所有的數組元素復制到新的數組。根據SDK版本的不同,新的數組要比原來(lái)的大50%或者100%(下面顯示的代碼把數組擴大100%): public void ensureCapacity(int minCapacity) {

              int oldCapacity = elementData.length;

              if (minCapacity > oldCapacity) {

              Object oldData[] = elementData;

              int newCapacity = Math.max(oldCapacity * 2, minCapacity);

              elementData = new Object[newCapacity];

              System.arraycopy(oldData, 0, elementData, 0, size);

              }

              }

            延伸閱讀

            文章來(lái)源于領(lǐng)測軟件測試網(wǎng) http://kjueaiud.com/

            TAG: java JAVA Java

            51/512345>

            關(guān)于領(lǐng)測軟件測試網(wǎng) | 領(lǐng)測軟件測試網(wǎng)合作伙伴 | 廣告服務(wù) | 投稿指南 | 聯(lián)系我們 | 網(wǎng)站地圖 | 友情鏈接
            版權所有(C) 2003-2010 TestAge(領(lǐng)測軟件測試網(wǎng))|領(lǐng)測國際科技(北京)有限公司|軟件測試工程師培訓網(wǎng) All Rights Reserved
            北京市海淀區中關(guān)村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
            技術(shù)支持和業(yè)務(wù)聯(lián)系:info@testage.com.cn 電話(huà):010-51297073

            軟件測試 | 領(lǐng)測國際ISTQBISTQB官網(wǎng)TMMiTMMi認證國際軟件測試工程師認證領(lǐng)測軟件測試網(wǎng)

            老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月
              <ruby id="h6500"><table id="h6500"></table></ruby>
              1. <ruby id="h6500"><video id="h6500"></video></ruby>
                    1. <progress id="h6500"><u id="h6500"><form id="h6500"></form></u></progress>