當前位置 : IT培訓網 > Java開發 > Java教程 > Java語言中哈希表和使用方法

Java語言中哈希表和使用方法

時間:2016-08-31 16:57:19??來源:Java培訓網??作者:IT培訓網??已有:名學員訪問該課程
標簽(Tag):?? java(710)Hashtable(4)
數組和向量都可以存儲對象,但對象的存儲位置是隨機的,也就是說對象本身與其存儲位置之間沒有必然的聯系。當要查找一個對象時,只能以某種順序(如順序查找或二分查找)與各個元素進行比較,當數組或向量中的元素數量

哈希表,當看到這個詞匯時我們想到的是什么呢,是不是手表之類的東西呢,如果是的,那你就錯了,哈希表也稱為散列表,是用來存儲群體對象的集合類結構。下面IT培訓網Java專家就來給大家詳細介紹下什么是哈希表吧!

什么是哈希表

數組和向量都可以存儲對象,但對象的存儲位置是隨機的,也就是說對象本身與其存儲位置之間沒有必然的聯系。當要查找一個對象時,只能以某種順序(如順序查找或二分查找)與各個元素進行比較,當數組或向量中的元素數量很多時,查找的效率會明顯的降低。

一種有效的存儲方式,是不與其他元素進行比較,一次存取便能得到所需要的記錄。這就需要在對象的存儲位置和對象的關鍵屬性(設為 k)之間建立一個特定的對應關系(設為 f),使每個對象與一個唯一的存儲位置相對應。在查找時,只要根據待查對象的關鍵屬性 k 計算f(k)的值即可。如果此對象在集合中,則必定在存儲位置 f(k)上,因此不需要與集合中的其他元素進行比較。稱這種對應關系 f 為哈希(hash)方法,按照這種思想建立的表為哈希表。

Java 使用哈希表類(Hashtable)來實現哈希表,以下是與哈希表相關的一些概念:

•       容量(Capacity):Hashtable 的容量不是固定的,隨對象的加入其容量也可以自動增長。

•       關鍵字(Key):每個存儲的對象都需要有一個關鍵字,key 可以是對象本身,也可以是對象的一部分(如某個屬性)。要求在一個 Hashtable 中的所有關鍵字都是唯一的。

•       哈希碼(Hash Code):若要將對象存儲到 Hashtable 上,就需要將其關鍵字 key 映射到一個整型數據,成為 key 的哈希碼。

•       項(Item):Hashtable 中的每一項都有兩個域,分別是關鍵字域 key 和值域 value(存儲的對象)。Key 和 value 都可以是任意的 Object 類型的對象,但不能為空。

•       裝填因子(Load Factor):裝填因子表示為哈希表的裝滿程度,其值等于元素數比上哈希表的長度。

哈希表的使用

哈希表類主要有三種形式的構造方法:

Hashtable(); //默認構造函數,初始容量為 101,最大填充因子 0.75

Hashtable(int capacity);

Hashtable(int capacity,float loadFactor)

哈希表類的主要方法如表 8-6 所示。

表 8-6 哈希表定義的常見方法

方法

功能

void clear()

重新設置并清空哈希表

boolean contains(Object value)

確定哈希表內是否包含了給定的對象,若有返回 true,否則返回 false

boolean containsKey(Object key)

確定哈希表內是否包含了給定的關鍵字,若有返回 true,否則返回 false

boolean isEmpty()

確認哈希表是否為空,若是返回 true,否則返回 false

Object get(Object key)

獲取對應關鍵字的對象,若不存在返回 null

void rehash()

再哈希,擴充哈希表使之可以保存更多的元素,當哈希表達到飽和時,系統自動調用此方法

Object put(Object key,Object value)

用給定的關鍵字把對象保存到哈希表中,此處的關鍵字和元素均不可為空

Object remove(Object key)

從哈希表中刪除與給定關鍵字相對應的對象,若該對象不存在返回 null

int size()

返回哈希表的大小

String toString()

將哈希表內容轉換為字符串

哈希表的創建也可以通過 new 操作符實現。其語句為:

    HashTable has=new HashTable();

【例 8-12】哈希表的遍歷。

//********** ep8_12.java **********

import java.util.*;

class ep8_12{

    public static void main(String args[]){

        Hashtable has=new Hashtable();

        has.put("one",new Integer(1));

        has.put("two",new Integer(2));

        has.put("three",new Integer(3));

        has.put("four",new Double(12.3));

        Set s=has.keySet();

        for(Iterator<String> i=s.iterator();i.hasNext();){

            System.out.println(has.get(i.next()));

        }

    }

}

運行結果:

2

1

3

12.3

好了,關于哈希表的介紹和使用方法就介紹到這里了,如果你還沒有學會或者看懂,就要咨詢我校的Java專家了,一對一的答疑解析讓你的學習事半功倍。我們的宗旨就是用最短的時間,學會最多的知識,早日成才早日就業。

頂一下
(0)
0%
踩一下
(0)
0%
------分隔線----------------------------
------分隔線----------------------------
Java教程
1、Java 概述
1.1 Java語言概述
1.2 Java虛擬機以及跨平臺原理
1.3 Java的主要就業方向
1.4 Java的不同版本
1.5 Java開發環境搭建
1.6 第一個Java程序示例
1.7 Java類和對象的概念
1.8 Java類庫及其組織結構
1.9 Java import
2、Java 語法基礎
2.1 Java數據類型以及變量的定義
2.2 Java數據類型轉換
2.3 Java運算符
2.4 Java流程控制
2.5 Java數組的定義和使用
2.6 Java字符串(String)
2.7 Java StringBuffer與StringBuider
2.8 強調一下編程風格
3、Java 類與對象
3.1 Java類的定義及其實例化
3.2 Java訪問修飾符
3.3 Java變量的作用域
3.4 Java this關鍵字詳解
3.5 Java方法重載
3.6 Java類的基本運行順序
3.7 Java包裝類、拆箱和裝箱詳解
3.8 再談Java包
3.9 源文件的聲明規則
4、Java 繼承和多態
4.1 繼承的概念與實現
4.2 Java super關鍵字
4.3 繼承中的方法的覆蓋和重載
4.4 多態和動態綁定
4.5 instanceof 運算符
4.6 多態對象的類型轉換
4.7 Java static關鍵字
4.8 Java final關鍵字
4.9 Java Object類
5、面向對象高級特性
5.1 Java內部類及其實例化
5.2 內部類的分類
5.3 抽象類的概念和使用
5.4 接口的概念和使用
5.5 接口和抽象類的區別
5.6 Java 泛型
5.7 泛型通配符和類型參數的范圍
6、異常處理
6.1 異常處理基礎
6.2 異常類型Java語言中常見的異常類型有哪些
6.3 未被捕獲的異常
6.4 try和catch的使用
6.5 多重catch語句的使用
6.6 try語句的嵌套
6.7 throw:異常的拋出
6.8 throws子句
6.9 finally塊
6.10 Java的內置異常
6.11 創建自己的異常子類
6.12 斷言
7、線程編程
7.1 線程的概念
7.2 Java線程模型
7.3 主線程
7.4 創建線程
7.5 創建多線程
7.6 isAlive()和join()的使用
7.7 線程優先級
7.8 線程同步
7.9 線程間通信
7.10 線程死鎖
7.11 線程的掛起、恢復和終止
8、輸入輸出(IO)操作
8.1 輸入輸出基本概念
8.2 面向字符的輸入流
8.3 面向字符的輸出流
8.4 面向字節的輸入輸出流
8.5 面向字節流的應用
8.6 文件與目錄管理
8.7 文件的隨機讀寫
8.8 文件的壓縮處理
9、常用類庫、向量與哈希
9.1 Java基礎類庫
9.2 Object類
9.3 Java語言包(java.lang)簡介
9.4 日期和時間類
9.5 向量及其應用
9.6 哈希表及其應用
10、圖形界面(GUI)設計
10.1 圖形界面設計基礎
10.2 框架窗口
10.3 標簽、按鈕和按鈕事件
10.4 面板
10.5 布局設計
10.6 文本框和文本區
10.7 文本框和文本區的輸入輸出
10.8 選擇框和單選按鈕
10.9 列表和組合框
10.10 菜單
10.11 對話框
10.12 滾動條
10.13 鼠標事件
10.14 鍵盤事件
11、圖形、圖像與多媒體
11.1 繪圖基礎
11.2 設置字型和顏色
11.3 繪圖模式
11.4 Graphics類的繪圖方法
11.5 Graphics2D類的繪圖方法
11.6 圖像處理基礎
11.7 圖像緩沖技術
11.8 多媒體基礎
12、網絡與數據庫編程
12.1 IP地址和InetAddress類
12.2 統一資源定位符
12.3 套接字(Socket)
12.4 數據庫連接
12.5 幾個重要的類和接口
12.6 數據庫查詢
12.7 數據庫更新
12.8 插入記錄
12.9 修改記錄
12.10 刪除記錄
激情色播