Lớp Hashtable (bảng băm) trong Java

Thảo luận trong 'Java/Java Script' bắt đầu bởi integer, 16 Tháng mười 2011.

  1. Offline

    integer

    • Tiếu Ngạo Giang Hồ

    • :-?
    Số bài viết:
    1.695
    Đã được thích:
    1.313
    Điểm thành tích:
    900
    [FONT=&quot]Lớp Hashtable mở rộng lớp trừu tượng Dictionary, lớp này cũng được định nghĩa trong gói java.util. Hashtable được sử dụng để ánh xạ khoá (key) đến giá trị (value). Ví dụ, nó có thể được sử dụng để ánh xạ các tên đến tuổi, những người lập trình đến những dự án, chức danh công việc đến lương, và cứ như vậy.[/FONT]
    [FONT=&quot]Hashtable[/FONT]
    [FONT=&quot] mở rộng kích thước khi các phần tử được thêm vào. Khi một Hashtable mới, bạn có thể chỉ định dung lượng ban đầu và yếu tố nạp (load factor). Điều này sẽ làm cho hashtable tăng kích thước lên, bất cứ lúc nào việc thêm vào một phần tử mới làm vượt qua giới hạn hiện hành của Hashtable. Giới hạn của Hashtable là dung lượng nhân lên bởi các yếu tố được nạp.Ví dụ: một bảng băm với dung lượng 100, và một yếu tố nạp [/FONT][FONT=&quot]là 0.75 sẽ có một giới hạn là 75 phần tử. Các phương thức xây dựng cho bảng băm được biểu diễn trong bảng sau:
    [/FONT]

    • [FONT=&quot]Các phương thức xây dựng Hashtable[/FONT]
    [FONT=&quot]Hashtable(int)[/FONT]: [FONT=&quot]Xây dựng một bảng mới với dung lượng ban đầu được chỉ định.[/FONT]
    [FONT=&quot]Hashtable(int, float)[/FONT]: [FONT=&quot]Xây dựng một lớp mới với dung lượng ban đầu được chỉ định và yếu tố nạp.[/FONT]
    [FONT=&quot]Hashtable(): [/FONT][FONT=&quot]Xây dựng một lớp mới bằng cách sử dụng giá trị mặc định cho dung lượng ban đầu và yếu tố nạp.[/FONT]
    [FONT=&quot]
    [/FONT]

    [FONT=&quot]
    [/FONT]

    [FONT=&quot]Hashtable hash1 = new Hashtable(500,0.80);[/FONT]

    [FONT=&quot]
    [/FONT]
    [FONT=&quot]Trong trường hợp này, Bảng băm “hash1” sẽ lưu trữ 500 phần tử. Khi bảng băm lưu trữ vừa đầy 80% (một yếu tố nạp vào của 0.80), kích thước tối đa của nó sẽ được tăng lên.[/FONT]
    [FONT=&quot]Mỗi phần tử trong một hashtable bao gồm một khoá và một giá trị. Các phần tử được thêm vào bảng băm bằng cách sử dụng phương thức put(), và được truy lục bằng cách sử dụng phương thức get(). Các phần tử có thể được xoá từ một bảng băm với phương thức remove(). Các phương thức contains() và containsKey() có thể được sử dụng để tra cứu một giá trị hoặc một khoá trong bảng băm. Một vài phương thức của Hashtable được tóm tắt trong bảng sau:[/FONT]

    • [FONT=&quot]Các phương thức lớp Hashtable[/FONT]

    [FONT=&quot]clear()[/FONT]: [FONT=&quot]Xoá tất cả các phần tử từ bảng băm.[/FONT]
    [FONT=&quot]clone(): [/FONT][FONT=&quot]Tạo một bản sao của Hashtable.[/FONT]
    [FONT=&quot]contains(Object)[/FONT]: [FONT=&quot]Trả về True nếu bảng băm chứa các đối tượng được chỉ định.[/FONT]
    [FONT=&quot]containsKey(Object)[/FONT]: [FONT=&quot]Trả về True nếu bảng băm chứa khoá được chỉ định.[/FONT]
    [FONT=&quot]elements(): [/FONT][FONT=&quot]Trả về một tập hợp phần tử của bảng băm. [/FONT]
    [FONT=&quot]get(Object key)[/FONT]: [FONT=&quot]Trả về đối tượng có khoá được chỉ định.[/FONT]
    [FONT=&quot]isEmpty(): [/FONT][FONT=&quot]Trả về true nếu bảng băm rỗng.[/FONT]
    [FONT=&quot]keys(): [/FONT][FONT=&quot]Trả về tập hợp các khoá trong bảng băm.[/FONT]
    [FONT=&quot]put(Object, Object)[/FONT]: [FONT=&quot]Thêm một phần tử mới vào bảng băm (Object, Object) là khoá và giá trị.[/FONT]
    [FONT=&quot]rehash(): [/FONT][FONT=&quot]Thay đổi bảng băm thành một bảng băm lớn hơn.[/FONT]
    [FONT=&quot]remove(Object key)[/FONT]:[FONT=&quot]Xoá một đối tượng được cho bởi khoá được chỉ định.[/FONT]
    [FONT=&quot]size(): [/FONT][FONT=&quot]Trả về số phần tử trong bảng băm.[/FONT]
    [FONT=&quot]toString()[/FONT]: [FONT=&quot]Trả về đại diện chuỗi được định dạng cho bảng băm. [/FONT]

    [FONT=&quot]Chương trình sau sử dụng lớp Hashtable. Trong chương trình này, tên của các tập ảnh là các khoá, và các năm là các giá trị.[/FONT]
    [FONT=&quot]“contains” được sử dụng để tra cứu phần tử nguyên 1969, để thấy có danh sách chứa bất kỳ các tập ảnh từ 1969.[/FONT]
    [FONT=&quot]“containsKey” được sử dụng để tìm kiếm cho khoá “Animals”, để tìm tập ảnh đó trong bẳng băm.[/FONT]
    [FONT=&quot]Phương thức “get()” được sử dụng để tìm tập ảnh “Wish You Were Here” có trong bảng băm không. Phương thức get() trả về phần tử cùng với khoá (tên và năm).[/FONT]


    [FONT=&quot]Code demo[/FONT]
    Mã:
      [/SIZE][FONT=Courier New][SIZE=3]
    import java.util.*;[/SIZE][/FONT][FONT=Courier New][SIZE=3] [/SIZE][/FONT][FONT=Courier New][SIZE=3]
      public class HashTableImplementer
      {
       public static void main(String args[])
       {
        //tạo một bảng băm mới
        Hashtable ht = new Hashtable();
       //thêm các tập ảnh tốt nhất của Pink Floyd
       ht.put(“Pulse”, new Integer(1995));
       ht.put(“Dark Side of the Moon”, new Integer(1973));
       ht.put(“Wish You Were Here”, new Integer(1975));
       ht.put(“Animals”, new Integer(1997));
       ht.put(“Ummagumma”, new Integer(1969));
       //Hiển thị bảng băm
       System.out.println(“Initailly: “+ht.toString());
       //kiểm tra cho bất kỳ tập ảnh nào từ 1969
       if(ht.contains(new Integer(1969)))
                  System.out.println(“An album from 1969 exists”);
       //kiểm tra cho tập ảnh các con thú
       if(ht.containsKey(“Animals”))
       System.out.println(“Animals was found”);
       //Tìm ra 
       Integer year = (Integer)ht.get(“Wish You Were Here”);
       System.out.println(“Wish you Were Here was released in”+year.toString());
      //Xoá một tập ảnh
       System.out.println(“Removing Ummagumma\r\n”);
       ht.remove(“Ummagumma”);
       //Duyệt qua tất cả các khoá trong bảng.
        System.out.println(“Remaining:\r\n”);
        for(Enumeration enum = ht.keys(); enum.hasMoreElements();)
        System.out.println((String)enum.nextElement());
       }
      }[/SIZE][/FONT][SIZE=3]
      [/CODE][/SIZE]
    ChIpKut3 thích bài này.

Chia sẻ trang này

Advertising: Linux system admin | nukeviet | nukeviet 4 | Upload ảnh miễn phí