轉: Java 容器

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

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

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


          網站導航:
           
          主站蜘蛛池模板: 西安市| 青岛市| 仁寿县| 佛冈县| 德安县| 沙河市| 辽阳市| 清徐县| 吉林市| 山西省| 万源市| 南康市| 林口县| 抚顺市| 临汾市| 灵武市| 松滋市| 木兰县| 万全县| 庐江县| 开原市| 宁海县| SHOW| 滁州市| 房产| 资溪县| 时尚| 扎兰屯市| 六枝特区| 承德县| 水城县| 阳曲县| 怀仁县| 同德县| 襄汾县| 延安市| 旅游| 凯里市| 秦安县| 荔浦县| 青海省|