轉(zhuǎn): Java 容器

          轉(zhuǎn):Java中容器是Java3中比較方便快捷的容器,在各種程序中運(yùn)用的比較多,給我們的編程帶來(lái)了很大的方便。
            Array的長(zhǎng)度是固定的且無(wú)法動(dòng)態(tài)改變其長(zhǎng)度,也就是說(shuō)定義大小后,此變量的大小不可以再改變了,但它是最有效的一個(gè)容器,存取速度相當(dāng)快。
          ?
            Array對(duì)象用length成員進(jìn)行計(jì)算元素個(gè)數(shù),通過(guò)[]來(lái)取用數(shù)據(jù),array對(duì)象無(wú)法判斷元素個(gè)數(shù),只能計(jì)算其容量。
          ?
            Array類(lèi)擁有一組static函數(shù),equals(),fill(),sort(),binary(),
          ?
            Array復(fù)制System.arrayCopy().
          ?
            compareTo()接受一個(gè)對(duì)象引數(shù),此引數(shù)大于自己時(shí)返回負(fù)值,相等時(shí)返回零,小于時(shí)返回正值。
          ?
          ?
            Java中的最關(guān)鍵的三個(gè)容器接口(list,set,map).
          ?
            List是一個(gè)interface
          ?
            List以元素按插次序來(lái)放置元素,不會(huì)重新排列。
          ?
            ArrayList以Array實(shí)現(xiàn)完成的List,允許快速隨機(jī)訪問(wèn)。如果只是簡(jiǎn)單地存取數(shù)據(jù),而不對(duì)其中的數(shù)據(jù)進(jìn)行有序插入使用此容器會(huì)很方便且速度很快。LinkList提供最佳循序訪問(wèn),具有addFirst(),addLast(),getFirst(),getLast(),removeFirst(),removeLast(),如果需要在隊(duì)列中插入一些數(shù)據(jù),可用此容器。由于其list的靈活性,在各種程序中使用的比較多。
          ?
          ?
            Set就是一個(gè)Collection 不接受重復(fù)元素,它使用自己內(nèi)部的一個(gè)排列機(jī)制。
          ?
            Set擁有和Collection一樣的interfaces
          ?
            HashSet注重查找時(shí)間,所有元素必須定義hashCode();對(duì)自己中的數(shù)據(jù)不進(jìn)行有序排列,按照加入的先后次序進(jìn)行排列。
          ?
            TreeSet底層結(jié)構(gòu)為tree的一種有序Set. 內(nèi)部數(shù)據(jù)進(jìn)行有序排列。
          ?
          ?
            Map也不接受重復(fù)元素,重復(fù)與否以鍵值(key)判斷,它擁有自己的內(nèi)部排列機(jī)制。
          ?
            ArrayList使用數(shù)字來(lái)選擇值,而Map使用另一個(gè)對(duì)象來(lái)取值。
          ?
            Map用put將Value值加入,用get()傳回key對(duì)應(yīng)的value。
          ?
            使用containsKey()和containsValue()來(lái)檢查map內(nèi)是否含有某個(gè)key或某個(gè)value。

          ?
            Map包括兩個(gè)maps,HashMap,TreeMap
          ?
            HashMap會(huì)運(yùn)用對(duì)象的hashCode()并利用它來(lái)快速找到key,帶來(lái)巨幅的效率提升。HashMap取代了Java2中的HashTable容器。
          ?
            TreeMap基于紅黑樹(shù)完成的一個(gè)實(shí)現(xiàn)品,它的數(shù)據(jù)按次序排列并惟一擁有subMap(),此函數(shù)返回tree中的部分組成。
          ?
          ?
            容器的填充
          ?
            ArrayList以 add()方法進(jìn)行數(shù)據(jù)的增加。容器有個(gè)Collections Class,含有一些static函數(shù),比如fill(),它將用一個(gè)object reference 復(fù)制到容器的每個(gè)位置上(只能list有用),即把原先的值覆蓋掉,此函數(shù)用處不大。
          ?
          ?
            迭代器Iterator
          ?
            迭代器是個(gè)對(duì)象,其職責(zé)便是走訪以及選擇序列中的一連串對(duì)象,迭代器是“輕量級(jí)”對(duì)晚,產(chǎn)生的代價(jià)極小。
          ?
            第一次調(diào)用Iterator的next()時(shí),返回序列中的第一個(gè)元素。
          ?
            調(diào)用next()取得序列中的下一個(gè)元素。
          ?
            調(diào)用hasNext()檢查序列是否還有其它元素。
          ?
            調(diào)用remove()移去迭代器最新傳回的元素。
          ?
          ?
            外引:
          ?
            C++中的vector容器知道他所持有的對(duì)象隸屬型別,但不進(jìn)行邊界檢查,而Java中的容器都進(jìn)行了邊界檢查,一旦越界即報(bào)RuntimeException。邊界檢查會(huì)帶來(lái)額外的效率負(fù)擔(dān)。
          ?
            Java中的容器可以持有Java任何對(duì)象(基本型別除外)。 一旦將對(duì)象裝入容器,其型別就會(huì)丟失,當(dāng)你使用的時(shí)候,必須先進(jìn)行轉(zhuǎn)型。
          posted on 2006-12-15 15:40 小橋 流水 閱讀(390) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): java技術(shù)

          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 历史| 南京市| 池州市| 保山市| 麻江县| 固原市| 穆棱市| 富民县| 屯门区| 龙口市| 阿勒泰市| 万载县| 钟祥市| 甘洛县| 平果县| 淮阳县| 平原县| 长泰县| 新民市| 手游| 南通市| 涞源县| 叙永县| 繁昌县| 永善县| 洛宁县| 桃园市| 荔浦县| 和静县| 成武县| 西畴县| 吉木萨尔县| 广南县| 新沂市| 清流县| 古田县| 宁陵县| 封开县| 天峨县| 西林县| 威远县|