最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java中哈希表及其應(yīng)用詳解

 更新時(shí)間:2015年06月10日 10:58:48   投稿:hebedich  
Java中哈希表(Hashtable)是如何實(shí)現(xiàn)的呢?Hashtable中有一個(gè)內(nèi)部類(lèi)Entry,用來(lái)保存單元數(shù)據(jù),我們用來(lái)構(gòu)建哈希表的每一個(gè)數(shù)據(jù)是Entry的一個(gè)實(shí)例。假設(shè)我們保存下面一組數(shù)據(jù),第一列作為key, 第二列作為value。

哈希表也稱(chēng)為散列表,是用來(lái)存儲(chǔ)群體對(duì)象的集合類(lèi)結(jié)構(gòu)。

什么是哈希表

數(shù)組和向量都可以存儲(chǔ)對(duì)象,但對(duì)象的存儲(chǔ)位置是隨機(jī)的,也就是說(shuō)對(duì)象本身與其存儲(chǔ)位置之間沒(méi)有必然的聯(lián)系。當(dāng)要查找一個(gè)對(duì)象時(shí),只能以某種順序(如順序查找或二分查找)與各個(gè)元素進(jìn)行比較,當(dāng)數(shù)組或向量中的元素?cái)?shù)量很多時(shí),查找的效率會(huì)明顯的降低。

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

Java 使用哈希表類(lèi)(Hashtable)來(lái)實(shí)現(xiàn)哈希表,以下是與哈希表相關(guān)的一些概念:

•容量(Capacity):Hashtable 的容量不是固定的,隨對(duì)象的加入其容量也可以自動(dòng)增長(zhǎng)。
•關(guān)鍵字(Key):每個(gè)存儲(chǔ)的對(duì)象都需要有一個(gè)關(guān)鍵字,key 可以是對(duì)象本身,也可以是對(duì)象的一部分(如某個(gè)屬性)。要求在一個(gè) Hashtable 中的所有關(guān)鍵字都是唯一的。
•哈希碼(Hash Code):若要將對(duì)象存儲(chǔ)到 Hashtable 上,就需要將其關(guān)鍵字 key 映射到一個(gè)整型數(shù)據(jù),成為 key 的哈希碼。
•項(xiàng)(Item):Hashtable 中的每一項(xiàng)都有兩個(gè)域,分別是關(guān)鍵字域 key 和值域 value(存儲(chǔ)的對(duì)象)。Key 和 value 都可以是任意的 Object 類(lèi)型的對(duì)象,但不能為空。
•裝填因子(Load Factor):裝填因子表示為哈希表的裝滿(mǎn)程度,其值等于元素?cái)?shù)比上哈希表的長(zhǎng)度。

哈希表的使用

哈希表類(lèi)主要有三種形式的構(gòu)造方法:

    Hashtable(); //默認(rèn)構(gòu)造函數(shù),初始容量為 101,最大填充因子 0.75
    Hashtable(int capacity);
    Hashtable(int capacity,float loadFactor)
哈希表類(lèi)的主要方法如表 8-6 所示。

表 8-6 哈希表定義的常見(jiàn)方法

方法 功能
void clear() 重新設(shè)置并清空哈希表
boolean contains(Object value) 確定哈希表內(nèi)是否包含了給定的對(duì)象,若有返回 true,否則返回 false
boolean containsKey(Object key) 確定哈希表內(nèi)是否包含了給定的關(guān)鍵字,若有返回 true,否則返回 false
boolean isEmpty() 確認(rèn)哈希表是否為空,若是返回 true,否則返回 false
Object get(Object key) 獲取對(duì)應(yīng)關(guān)鍵字的對(duì)象,若不存在返回 null
void rehash() 再哈希,擴(kuò)充哈希表使之可以保存更多的元素,當(dāng)哈希表達(dá)到飽和時(shí),系統(tǒng)自動(dòng)調(diào)用此方法
Object put(Object key,Object value) 用給定的關(guān)鍵字把對(duì)象保存到哈希表中,此處的關(guān)鍵字和元素均不可為空
Object remove(Object key) 從哈希表中刪除與給定關(guān)鍵字相對(duì)應(yīng)的對(duì)象,若該對(duì)象不存在返回 null
int size() 返回哈希表的大小
String toString() 將哈希表內(nèi)容轉(zhuǎn)換為字符串

哈希表的創(chuàng)建也可以通過(guò) new 操作符實(shí)現(xiàn)。其語(yǔ)句為:

    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()));
    }
  }
}

運(yùn)行結(jié)果:

2
1
3
12.3

相關(guān)文章

  • Spring Boot訪(fǎng)問(wèn)靜態(tài)資源css/js,你真的懂了嗎

    Spring Boot訪(fǎng)問(wèn)靜態(tài)資源css/js,你真的懂了嗎

    在搭建springboot時(shí)經(jīng)常需要在html中訪(fǎng)問(wèn)一些靜態(tài)資源,很多朋友不清楚如何在 Spring Boot中訪(fǎng)問(wèn)靜態(tài)資源,本文給大家?guī)?lái)兩種解決方案,感興趣的朋友跟隨小編一起看看吧
    2021-05-05
  • springboot中使用redis的方法代碼詳解

    springboot中使用redis的方法代碼詳解

    &#8203;redis 作為一個(gè)高性能的內(nèi)存數(shù)據(jù)庫(kù),如果不會(huì)用就太落伍了,之前在 node.js 中用過(guò) redis,本篇記錄如何將 redis 集成到 spring boot 中。感興趣的朋友跟隨小編一起看看吧
    2019-05-05
  • Java操作Word文檔的全攻略(讀取doc與docx文件)

    Java操作Word文檔的全攻略(讀取doc與docx文件)

    在當(dāng)今辦公自動(dòng)化和文檔處理場(chǎng)景中,Java開(kāi)發(fā)者經(jīng)常需要處理Word文檔(.doc和.docx格式),無(wú)論是數(shù)據(jù)提取、文檔轉(zhuǎn)換還是內(nèi)容分析,掌握高效的Word文檔操作技術(shù)至關(guān)重要,本文將全面介紹Java中讀取兩種主流Word格式的技術(shù)方案、核心API和最佳實(shí)踐,需要的朋友可以參考下
    2025-07-07
  • Java?pdf文件書(shū)簽承前縮放驗(yàn)證的設(shè)置方法

    Java?pdf文件書(shū)簽承前縮放驗(yàn)證的設(shè)置方法

    很多朋友不知道是什么是書(shū)簽承前縮放,簡(jiǎn)單說(shuō)就是可以任意改變當(dāng)前pdf文檔縮放比例,點(diǎn)擊書(shū)簽后不影響其縮放比率,本文給大家介紹下Java?pdf文件書(shū)簽承前縮放驗(yàn)證的設(shè)置方法,感興趣的朋友一起看看吧
    2022-02-02
  • SpringBoot整合ES-Elasticsearch的實(shí)例

    SpringBoot整合ES-Elasticsearch的實(shí)例

    這篇文章主要介紹了SpringBoot整合ES-Elasticsearch的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • Java數(shù)據(jù)庫(kù)連接池之DBCP淺析_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    Java數(shù)據(jù)庫(kù)連接池之DBCP淺析_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要為大家詳細(xì)介紹了Java數(shù)據(jù)庫(kù)連接池之DBCP的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • Java中BigDecimal類(lèi)的使用詳解

    Java中BigDecimal類(lèi)的使用詳解

    這篇文章主要介紹了Java中BigDecimal類(lèi)的使用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • SpringBoot集成MyBatis中SQL攔截器的實(shí)戰(zhàn)指南

    SpringBoot集成MyBatis中SQL攔截器的實(shí)戰(zhàn)指南

    這篇文章主要為大家詳細(xì)介紹了SpringBoot集成MyBatis中SQL攔截器的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-07-07
  • Java中圖片轉(zhuǎn)換為Base64的示例及注意事項(xiàng)

    Java中圖片轉(zhuǎn)換為Base64的示例及注意事項(xiàng)

    本文介紹了Base64編碼的概念及其作用,同時(shí)列舉了在實(shí)現(xiàn)圖片轉(zhuǎn)換為Base64過(guò)程中需要注意的問(wèn)題,包括文件大小、讀取異常、圖片格式、網(wǎng)絡(luò)傳輸效率以及數(shù)據(jù)安全性等,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-10-10
  • Ubuntu環(huán)境下的 RabbitMQ 安裝與配置詳細(xì)指南

    Ubuntu環(huán)境下的 RabbitMQ 安裝與配置詳細(xì)指南

    本文詳解Ubuntu下RabbitMQ安裝與配置,涵蓋Erlang依賴(lài)安裝、服務(wù)部署、管理界面啟用及安全用戶(hù)權(quán)限設(shè)置,強(qiáng)調(diào)多協(xié)議支持、高可用性設(shè)計(jì)和分布式場(chǎng)景適配,助力構(gòu)建穩(wěn)定可靠的消息隊(duì)列系統(tǒng),感興趣的朋友跟隨小編一起看看吧
    2025-09-09

最新評(píng)論

剑河县| 江津市| 宣威市| 长泰县| 安顺市| 金昌市| 收藏| 奉贤区| 花垣县| 合山市| 惠州市| 东山县| 大厂| 马龙县| 周至县| 嘉黎县| 宝兴县| 溧阳市| 靖州| 德保县| 台安县| 两当县| 舞阳县| 和顺县| 阿克| 确山县| 育儿| 伊川县| 静宁县| 广汉市| 深州市| 绥宁县| 家居| 仪征市| 璧山县| 外汇| 长垣县| 南华县| 连南| 繁昌县| 纳雍县|