java哈希表,java哈希表用法

本文目錄一覽:

java中hashtable怎樣存儲數據和讀取數據?

Hashtable-哈希表類\x0d\x0a\x0d\x0a以哈希表的形式存儲數據,數據的形式是鍵值對.\x0d\x0a特點:\x0d\x0a查找速度快,遍歷相對慢\x0d\x0a鍵值不能有空指針和重複數據\x0d\x0a\x0d\x0a創建\x0d\x0aHashtable ht=new \x0d\x0aHashtable();\x0d\x0a\x0d\x0a添值\x0d\x0a\x0d\x0aht.put(1,”Andy”);\x0d\x0aht.put(2,”Bill”);\x0d\x0aht.put(3,”Cindy”);\x0d\x0aht.put(4,”Dell”);\x0d\x0aht.put(5,”Felex”);\x0d\x0aht.put(6,”Edinburg”);\x0d\x0aht.put(7,”Green”);\x0d\x0a\x0d\x0a取值\x0d\x0a\x0d\x0aString str=ht.get(1);\x0d\x0aSystem.out.println(str);// Andy\x0d\x0a\x0d\x0a對鍵進行遍歷\x0d\x0a\x0d\x0aIterator it = ht.keySet().iterator();\x0d\x0a\x0d\x0awhile (it.hasNext()) {\x0d\x0a Integer key = (Integer)it.next();\x0d\x0a \x0d\x0aSystem.out.println(key);\x0d\x0a}\x0d\x0a\x0d\x0a對值進行遍歷\x0d\x0a\x0d\x0aIterator it = ht.values().iterator();\x0d\x0a\x0d\x0awhile (it.hasNext()) {\x0d\x0a String value =(String) it.next();\x0d\x0a \x0d\x0aSystem.out.println(value);\x0d\x0a}\x0d\x0a\x0d\x0a取Hashtable記錄數\x0d\x0a\x0d\x0aHashtable ht=new Hashtable();\x0d\x0a\x0d\x0aht.put(1,”Andy”);\x0d\x0aht.put(2,”Bill”);\x0d\x0aht.put(3,”Cindy”);\x0d\x0aht.put(4,”Dell”);\x0d\x0aht.put(5,”Felex”);\x0d\x0aht.put(6,”Edinburg”);\x0d\x0aht.put(7,”Green”);\x0d\x0a\x0d\x0aint i=ht.size();// 7\x0d\x0a\x0d\x0a刪除元素\x0d\x0a\x0d\x0aHashtable ht=new Hashtable();\x0d\x0a\x0d\x0aht.put(1,”Andy”);\x0d\x0aht.put(2,”Bill”);\x0d\x0aht.put(3,”Cindy”);\x0d\x0aht.put(4,”Dell”);\x0d\x0aht.put(5,”Felex”);\x0d\x0aht.put(6,”Edinburg”);\x0d\x0aht.put(7,”Green”);\x0d\x0a\x0d\x0aht.remove(1);\x0d\x0aht.remove(2);\x0d\x0aht.remove(3);\x0d\x0aht.remove(4);\x0d\x0a\x0d\x0aSystem.out.println(ht.size());// 3\x0d\x0a\x0d\x0aIterator it = ht.values().iterator();\x0d\x0a\x0d\x0awhile (it.hasNext()) {\x0d\x0a // Get value\x0d\x0a String value =(String) \x0d\x0ait.next();\x0d\x0a System.out.println(value);\x0d\x0a}

java中HashSet的哈希表和ASCII碼還有2進位之間是什麼關係

首先電腦只有0,1就是所謂的二進位;HashSet的哈希表是通過哈希演算法來的(後面一個數是前面兩個數之和),HashSet裡面是通過哈希演算法計算出值然後形成的一條哈希單向鏈;而ASCII碼是位元組數,就像你傳輸IO流底層都是通過byte實現的,所以無論什麼都可以變成byte位元組,比如某個東西變成byte位元組這個位元組數就是ASCII碼了。

第二個問題Iterator遍例器,一個循環中只能有一個next()方法,不然你while判斷幹嘛,如果值是單數會拋異常,然後你的sop方法傳的是Object類型的,這個就是多態了;Object obj = (A.getName()+…+A.getAge());然後你列印Object類型的值,記住除了String類型重寫了toString方法外,別的引用類型都繼承了Object的toString方法輸出的引用地址,你的代碼直接在Person中重寫toString方法就可以了。

java中的Hashtable怎麼用,請詳細舉例子說明,拜託了 謝謝

就是哈希表,下面這個示例創建了一個數字的哈希表。它將數字的名稱用作鍵: HashtableString, Integer numbers = new HashtableString, Integer();  

 numbers.put(“one”, 1);  

 numbers.put(“two”, 2);  

 numbers.put(“three”, 3);

要獲取一個數字,可以使用以下代碼:

Integer n = numbers.get(“two”);  

 if (n != null) {  

 System.out.println(“two = ” + n);  

 }

java中「hashcode」什麼時候用?怎麼用?

有許多人學了很長時間的Java,但一直不明白hashCode方法的作用, \x0d\x0a我來解釋一下吧。首先,想要明白hashCode的作用,你必須要先知道Java中的集合。 \x0d\x0a總的來說,Java中的集合(Collection)有兩類,一類是List,再有一類是Set。 \x0d\x0a你知道它們的區別嗎?前者集合內的元素是有序的,元素可以重複;後者元素無序,但元素不可重複。 \x0d\x0a那麼這裡就有一個比較嚴重的問題了:要想保證元素不重複,可兩個元素是否重複應該依據什麼來判斷呢? \x0d\x0a這就是Object.equals方法了。但是,如果每增加一個元素就檢查一次,那麼當元素很多時,後添加到集合中的元素比較的次數就非常多了。 \x0d\x0a也就是說,如果集合中現在已經有1000個元素,那麼第1001個元素加入集合時,它就要調用1000次equals方法。這顯然會大大降低效率。 \x0d\x0a於是,Java採用了哈希表的原理。哈希(Hash)實際上是個人名,由於他提出一哈希演算法的概念,所以就以他的名字命名了。 \x0d\x0a哈希演算法也稱為散列演算法,是將數據依特定演算法直接指定到一個地址上。如果詳細講解哈希演算法,那需要更多的文章篇幅,我在這裡就不介紹了。 \x0d\x0a初學者可以這樣理解,hashCode方法實際上返回的就是對象存儲的物理地址(實際可能並不是)。 \x0d\x0a這樣一來,當集合要添加新的元素時,先調用這個元素的hashCode方法,就一下子能定位到它應該放置的物理位置上。 \x0d\x0a如果這個位置上沒有元素,它就可以直接存儲在這個位置上,不用再進行任何比較了;如果這個位置上已經有元素了, \x0d\x0a就調用它的equals方法與新元素進行比較,相同的話就不存了,不相同就散列其它的地址。 \x0d\x0a所以這裡存在一個衝突解決的問題。這樣一來實際調用equals方法的次數就大大降低了,幾乎只需要一兩次。 \x0d\x0a所以,Java對於eqauls方法和hashCode方法是這樣規定的: \x0d\x0a1、如果兩個對象相同,那麼它們的hashCode值一定要相同;2、如果兩個對象的hashCode相同,它們並不一定相同 上面說的對象相同指的是用eqauls方法比較。 \x0d\x0a你當然可以不按要求去做了,但你會發現,相同的對象可以出現在Set集合中。同時,增加新元素的效率會大大下降。hashcode這個方法是用來鑒定2個對象是否相等的。 那你會說,不是還有equals這個方法嗎? 不錯,這2個方法都是用來判斷2個對象是否相等的。但是他們是有區別的。 一般來講,equals這個方法是給用戶調用的,如果你想判斷2個對象是否相等,你可以重寫equals方法,然後在代碼中調用,就可以判斷他們是否相等 了。簡單來講,equals方法主要是用來判斷從表面上看或者從內容上看,2個對象是不是相等。舉個例子,有個學生類,屬性只有姓名和性別,那麼我們可以 認為只要姓名和性別相等,那麼就說這2個對象是相等的。 hashcode方法一般用戶不會去調用,比如在hashmap中,由於key是不可以重複的,他在判斷key是不是重複的時候就判斷了hashcode 這個方法,而且也用到了equals方法。這裡不可以重複是說equals和hashcode只要有一個不等就可以了!所以簡單來講,hashcode相 當於是一個對象的編碼,就好像文件中的md5,他和equals不同就在於他返回的是int型的,比較起來不直觀。我們一般在覆蓋equals的同時也要 覆蓋hashcode,讓他們的邏輯一致。舉個例子,還是剛剛的例子,如果姓名和性別相等就算2個對象相等的話,那麼hashcode的方法也要返回姓名 的hashcode值加上性別的hashcode值,這樣從邏輯上,他們就一致了。 要從物理上判斷2個對象是否相等,用==就可以了。

java中hashtable怎樣存儲數據和讀取數據

Hashtable-哈希表類

以哈希表的形式存儲數據,數據的形式是鍵值對.

特點:

查找速度快,遍歷相對慢

鍵值不能有空指針和重複數據

創建

HashtableInteger,String ht=new

HashtableInteger,String();

添值

ht.put(1,”Andy”);

ht.put(2,”Bill”);

ht.put(3,”Cindy”);

ht.put(4,”Dell”);

ht.put(5,”Felex”);

ht.put(6,”Edinburg”);

ht.put(7,”Green”);

取值

String str=ht.get(1);

System.out.println(str);// Andy

對鍵進行遍歷

Iterator it = ht.keySet().iterator();

while (it.hasNext()) {

Integer key = (Integer)it.next();

System.out.println(key);

}

對值進行遍歷

Iterator it = ht.values().iterator();

while (it.hasNext()) {

String value =(String) it.next();

System.out.println(value);

}

取Hashtable記錄數

HashtableInteger,String ht=new HashtableInteger,String();

ht.put(1,”Andy”);

ht.put(2,”Bill”);

ht.put(3,”Cindy”);

ht.put(4,”Dell”);

ht.put(5,”Felex”);

ht.put(6,”Edinburg”);

ht.put(7,”Green”);

int i=ht.size();// 7

刪除元素

HashtableInteger,String ht=new HashtableInteger,String();

ht.put(1,”Andy”);

ht.put(2,”Bill”);

ht.put(3,”Cindy”);

ht.put(4,”Dell”);

ht.put(5,”Felex”);

ht.put(6,”Edinburg”);

ht.put(7,”Green”);

ht.remove(1);

ht.remove(2);

ht.remove(3);

ht.remove(4);

System.out.println(ht.size());// 3

Iterator it = ht.values().iterator();

while (it.hasNext()) {

// Get value

String value =(String)

it.next();

System.out.println(value);

}

原創文章,作者:UXSN,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/135346.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
UXSN的頭像UXSN
上一篇 2024-10-04 00:12
下一篇 2024-10-04 00:12

相關推薦

  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java Bean載入過程

    Java Bean載入過程涉及到類載入器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean載入的過程。 一、類載入器 類載入器是Java虛擬機…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Java判斷字元串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字元串中是否存在多個指定字元: 一、字元串遍歷 字元串是Java編程中非常重要的一種數據類型。要判斷字元串中是否存在多個指定字元…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29
  • Java任務下發回滾系統的設計與實現

    本文將介紹一個Java任務下發回滾系統的設計與實現。該系統可以用於執行複雜的任務,包括可回滾的任務,及時恢復任務失敗前的狀態。系統使用Java語言進行開發,可以支持多種類型的任務。…

    編程 2025-04-29
  • Java 8 Group By 會影響排序嗎?

    是的,Java 8中的Group By會對排序產生影響。本文將從多個方面探討Group By對排序的影響。 一、Group By的概述 Group By是SQL中的一種常見操作,它…

    編程 2025-04-29

發表回復

登錄後才能評論