<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    胡祥春開發專欄

    基于Java EE & WebService的日文軟件開發
    隨筆 - 1, 文章 - 24, 評論 - 7, 引用 - 0
    數據加載中……

    對java.util的總結

    對java.util的總結

    作者:時時

    15.3.3 HashSet類
    HashSet擴展AbstractSet并且實現Set接口。它創建一個類集,該類集使用散列表進行存
    儲。正像大多數讀者很可能知道的那樣,散列表通過使用稱之為散列法的機制來存儲信息。
    在散列(hashing)中,一個關鍵字的信息內容被用來確定唯一的一個值,稱為散列碼(hash
    code)。而散列碼被用來當做與關鍵字相連的數據的存儲下標。關鍵字到其散列碼的轉換
    是自動執行的??你看不到散列碼本身。你的程序代碼也不能直接索引散列表。散列法的
    優點在于即使對于大的集合,它允許一些基本操作如add( ),contains( ),remove( )和size( )
    方法的運行時間保持不變。
    下面的構造函數定義為:
    HashSet( )
    HashSet(Collection c)
    HashSet(int capacity)
    HashSet(int capacity, float fillRatio)
    第一種形式構造一個默認的散列集合。第二種形式用c中的元素初始化散列集合。第三
    種形式用capacity初始化散列集合的容量。第四種形式用它的參數初始化散列集合的容量和
    填充比(也稱為加載容量)。填充比必須介于0.0與1.0之間,它決定在散列集合向上調整大
    小之前,有多少能被充滿。具體的說,就是當元素的個數大于散列集合容量乘以它的填充
    比時,散列集合被擴大。對于沒有獲得填充比的構造函數,默認使用0.75。
    HashSet沒有定義任何超過它的超類和接口提供的其他方法。
    重要的是,注意散列集合并沒有確保其元素的順序,因為散列法的處理通常不讓自己
    參與創建排序集合。如果需要排序存儲,另一種類集??TreeSet將是一個更好的選擇。
    這里是一個說明HashSet的例子。
    // Demonstrate HashSet.
    import java.util.*;
    class HashSetDemo {
    public static void main(String args[]) {
    // create a hash set
    HashSet hs = new HashSet();
    // add elements to the hash set
    hs.add("B");
    hs.add("A");
    hs.add("D");
    hs.add("E");
    hs.add("C");
    hs.add("F");

    System.out.println(hs);
    }
    }
    下面是該程序的輸出:
    [A, F, E, D, C, B]
    如上面解釋的那樣,元素并沒有按順序進行存儲。
    15.3.4 TreeSet類
    TreeSet為使用樹來進行存儲的Set接口提供了一個工具,對象按升序存儲。訪問和檢索
    是很快的。在存儲了大量的需要進行快速檢索的排序信息的情況下,TreeSet是一個很好的
    選擇。
    下面的構造函數定義為:
    TreeSet( )
    TreeSet(Collection c)
    TreeSet(Comparator comp)
    TreeSet(SortedSet ss)
    第一種形式構造一個空的樹集合,該樹集合將根據其元素的自然順序按升序排序。第
    二種形式構造一個包含了c的元素的樹集合。第三種形式構造一個空的樹集合,它按照由
    comp指定的比較函數進行排序(比較函數將在本章后面介紹)。第四種形式構造一個包含
    了ss的元素的樹集合
    這里是一個說明TreeSet的例子。
    // Demonstrate TreeSet.
    import java.util.*;
    class TreeSetDemo {
    public static void main(String args[]) {
    // Create a tree set
    TreeSet ts = new TreeSet();
    // Add elements to the tree set
    ts.add("C");
    ts.add("A");
    ts.add("B");
    ts.add("E");
    ts.add("F");
    ts.add("D");
    System.out.println(ts);
    }
    }
    這個程序的輸出如下所示:
    [A, B, C, D, E, F]
    正如上面解釋的那樣,因為TreeSet按樹存儲其元素,它們被按照排序次序自動安排,

    如程序輸出所示。
    15.4 通過迭代函數訪問類集
    通常希望循環通過類集中的元素。例如,可能會希望顯示每一個元素。到目前為止,
    處理這個問題的最簡單方法是使用iterator,iterator是一個或者實現Iterator或者實現
    ListIterator接口的對象。Iterator可以完成循環通過類集,從而獲得或刪除元素。ListIterator
    擴展Iterator,允許雙向遍歷列表,并可以修改單元。Iterator接口說明的方法總結在表15-4
    中。ListIterator接口說明的方法總結在表15-5中。
    表15-4 由Iterator 定義的方法
    方法描述
    boolean hasNext( ) 如果存在更多的元素,則返回true,否則返回false
    Object next( ) 返回下一個元素。如果沒有下一個元素,則引發NoSuchElementException異常
    void remove( ) 刪除當前元素,如果試圖在調用next( )方法之后,調用remove( )方法,則引發
    IllegalStateException異常
    表15-5 由ListIterator 定義的方法
    方法描述
    void add(Object obj) 將obj插入列表中的一個元素之前,該元素在下一次調用next( )方法時,被返

    boolean hasNext( ) 如果存在下一個元素,則返回true;否則返回false
    boolean hasPrevious( ) 如果存在前一個元素,則返回true;否則返回false
    Object next( ) 返回下一個元素,如果不存在下一個元素,則引發一個NoSuchElement
    Exception異常
    int nextIndex( ) 返回下一個元素的下標,如果不存在下一個元素,則返回列表的大小
    Object previous( ) 返回前一個元素,如果前一個元素不存在,則引發一個NoSuchElement
    Exception異常
    int previousIndex( ) 返回前一個元素的下標,如果前一個元素不存在,則返回-1
    void remove( ) 從列表中刪除當前元素。如果remove( )方法在next( )方法或previous( )方法調
    用之前被調用,則引發一個IllegalStateException異常
    void set(Object obj) 將obj賦給當前元素。這是上一次調用next( )方法或previous( )方法最后返回的
    元素
    15.4.1 使用迭代函數
    在通過迭代函數訪問類集之前,必須得到一個迭代函數。每一個Collection類都提供一
    個iterator( )函數,該函數返回一個對類集頭的迭代函數。通過使用這個迭代函數對象,可
    以訪問類集中的每一個元素,一次一個元素。通常,使用迭代函數循環通過類集的內容,

    步驟如下:
    1. 通過調用類集的iterator( )方法獲得對類集頭的迭代函數。
    2. 建立一個調用hasNext( )方法的循環,只要hasNext( )返回true,就進行循環迭代。
    3. 在循環內部,通過調用next( )方法來得到每一個元素。
    對于執行List的類集,也可以通過調用ListIterator來獲得迭代函數。正如上面解釋的那
    樣,列表迭代函數提供了前向或后向訪問類集的能力,并可讓你修改元素。否則,ListIterator
    如同Iterator功能一樣。
    這里是一個實現這些步驟的例子,說明了Iterator和ListIterator。它使用ArrayList對象,
    但是總的原則適用于任何類型的類集。當然,ListIterator只適用于那些實現List接口的類集。
    // Demonstrate iterators.
    import java.util.*;
    class IteratorDemo {
    public static void main(String args[]) {
    // create an array list
    ArrayList al = new ArrayList();
    // add elements to the array list
    al.add("C");
    al.add("A");
    al.add("E");
    al.add("B");
    al.add("D");
    al.add("F");
    // use iterator to display contents of al
    System.out.print("Original contents of al: ");
    Iterator itr = al.iterator();
    while(itr.hasNext()) {
    Object element = itr.next();
    System.out.print(element + " ");
    }
    System.out.println();
    // modify objects being iterated
    ListIterator litr = al.listIterator();
    while(litr.hasNext()) {
    Object element = litr.next();
    litr.set(element + "+");
    }
    System.out.print("Modified contents of al: ");
    itr = al.iterator();
    while(itr.hasNext()) {
    Object element = itr.next();
    System.out.print(element + " ");
    }
    System.out.println();
    314 第2 部分Java 庫
    // now, display the list backwards
    System.out.print("Modified list backwards: ");
    while(litr.hasPrevious()) {
    Object element = litr.previous();
    System.out.print(element + " ");
    }
    System.out.println();
    }
    }
    程序的輸出如下所示:
    Original contents of al: C A E B D F
    Modified contents of al: C+ A+ E+ B+ D+ F+
    Modified list backwards: F+ D+ B+ E+ A+ C+
    特別值得注意的是:列表是如何被反向顯示的。在列表被修改之后,litr指向列表的末
    端(記住,當到達列表末端時,litr.hasNext( )方法返回false)。為了以反向遍歷列表,程序
    繼續使用litr,但這一次,程序檢測它是否有前一個元素。只要它有前一個元素,該元素就
    被獲得并被顯示出來。

    posted on 2005-11-02 13:54 上海灘拾貝 閱讀(271) 評論(0)  編輯  收藏 所屬分類: 編程基礎

    主站蜘蛛池模板: 亚洲春黄在线观看| 久久精品国产精品亚洲艾| 亚洲av永久无码嘿嘿嘿| 99视频在线免费| 亚洲天堂福利视频| 18禁美女黄网站色大片免费观看 | 亚洲精品无码人妻无码| 女性自慰aⅴ片高清免费| 亚洲精品无码专区在线播放| 女人18毛片水最多免费观看 | 亚洲高清国产AV拍精品青青草原| 一级中文字幕免费乱码专区| 久久亚洲精品无码观看不卡| a级特黄毛片免费观看| 亚洲国产精品久久久久网站| ww在线观视频免费观看| 中文日韩亚洲欧美制服| 四虎影视永久免费观看| 中文字幕不卡免费高清视频| 亚洲欧洲日韩国产综合在线二区| 台湾一级毛片永久免费| 国产亚洲精品美女2020久久| 中文字幕亚洲无线码| 91香蕉国产线观看免费全集| 亚洲综合在线一区二区三区| 亚洲精品国产自在久久| 男人j进入女人j内部免费网站| 亚洲国产模特在线播放| 在线视频免费国产成人| a视频在线免费观看| 亚洲人成网站看在线播放| 亚洲国产婷婷综合在线精品 | 最好免费观看高清在线| 亚洲免费福利视频| 亚洲男人在线无码视频| 久久精品国产免费观看三人同眠| 亚洲av永久无码精品秋霞电影秋| 精品国产综合成人亚洲区| 成年人在线免费观看| A片在线免费观看| 亚洲国产精品网站在线播放 |