W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
Hashtable是原始的java.util的一部分, 是一個(gè)Dictionary具體的實(shí)現(xiàn) 。
然而,Java 2 重構(gòu)的Hashtable實(shí)現(xiàn)了Map接口,因此,Hashtable現(xiàn)在集成到了集合框架中。它和HashMap類很相似,但是它支持同步。
像HashMap一樣,Hashtable在哈希表中存儲(chǔ)鍵/值對(duì)。當(dāng)使用一個(gè)哈希表,要指定用作鍵的對(duì)象,以及要鏈接到該鍵的值。
然后,該鍵經(jīng)過(guò)哈希處理,所得到的散列碼被用作存儲(chǔ)在該表中值的索引。
Hashtable定義了四個(gè)構(gòu)造方法。第一個(gè)是默認(rèn)構(gòu)造方法:
Hashtable()
第二個(gè)構(gòu)造函數(shù)創(chuàng)建指定大小的哈希表:
Hashtable(int size)
第三個(gè)構(gòu)造方法創(chuàng)建了一個(gè)指定大小的哈希表,并且通過(guò)fillRatio指定填充比例。
填充比例必須介于0.0和1.0之間,它決定了哈希表在重新調(diào)整大小之前的充滿程度:
Hashtable(int size,float fillRatio)
第四個(gè)構(gòu)造方法創(chuàng)建了一個(gè)以M中元素為初始化元素的哈希表。
哈希表的容量被設(shè)置為M的兩倍。
Hashtable(Map m)
Hashtable中除了從Map接口中定義的方法外,還定義了以下方法:
序號(hào) | 方法描述 |
---|---|
1 | void clear( ) 將此哈希表清空,使其不包含任何鍵。 |
2 | Object clone( ) 創(chuàng)建此哈希表的淺表副本。 |
3 | boolean contains(Object value) 測(cè)試此映射表中是否存在與指定值關(guān)聯(lián)的鍵。 |
4 | boolean containsKey(Object key) 測(cè)試指定對(duì)象是否為此哈希表中的鍵。 |
5 | boolean containsValue(Object value) 如果此 Hashtable 將一個(gè)或多個(gè)鍵映射到此值,則返回 true。 |
6 | Enumeration elements( ) 返回此哈希表中的值的枚舉。 |
7 | Object get(Object key) 返回指定鍵所映射到的值,如果此映射不包含此鍵的映射,則返回 null. 更確切地講,如果此映射包含滿足 (key.equals(k)) 的從鍵 k 到值 v 的映射,則此方法返回 v;否則,返回 null。 |
8 | boolean isEmpty( ) 測(cè)試此哈希表是否沒(méi)有鍵映射到值。 |
9 | Enumeration keys( ) 返回此哈希表中的鍵的枚舉。 |
10 | Object put(Object key, Object value) 將指定 key 映射到此哈希表中的指定 value。 |
11 | void rehash( ) 增加此哈希表的容量并在內(nèi)部對(duì)其進(jìn)行重組,以便更有效地容納和訪問(wèn)其元素。 |
12 | Object remove(Object key) 從哈希表中移除該鍵及其相應(yīng)的值。 |
13 | int size( ) 返回此哈希表中的鍵的數(shù)量。 |
14 | String toString( ) 返回此 Hashtable 對(duì)象的字符串表示形式,其形式為 ASCII 字符 ", " (逗號(hào)加空格)分隔開的、括在括號(hào)中的一組條目。 |
下面的程序說(shuō)明這個(gè)數(shù)據(jù)結(jié)構(gòu)支持的幾個(gè)方法:
import java.util.*;
public class HashTableDemo {
public static void main(String args[]) {
// Create a hash map
Hashtable balance = new Hashtable();
Enumeration names;
String str;
double bal;
balance.put("Zara", new Double(3434.34));
balance.put("Mahnaz", new Double(123.22));
balance.put("Ayan", new Double(1378.00));
balance.put("Daisy", new Double(99.22));
balance.put("Qadir", new Double(-19.08));
// Show all balances in hash table.
names = balance.keys();
while(names.hasMoreElements()) {
str = (String) names.nextElement();
System.out.println(str + ": " +
balance.get(str));
}
System.out.println();
// Deposit 1,000 into Zara's account
bal = ((Double)balance.get("Zara")).doubleValue();
balance.put("Zara", new Double(bal+1000));
System.out.println("Zara's new balance: " +
balance.get("Zara"));
}
}
以上實(shí)例編譯運(yùn)行結(jié)果如下:
Qadir: -19.08
Zara: 3434.34
Mahnaz: 123.22
Daisy: 99.22
Ayan: 1378.0
Zara's new balance: 4434.34
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: