日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java hashtable排序_java中哈希表中有迭代器模式的实现,可以认为其是顺序表吗?...

發布時間:2025/4/16 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java hashtable排序_java中哈希表中有迭代器模式的实现,可以认为其是顺序表吗?... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

先上答案:HashTable (哈希表)不是順序表。

分析如下:

要搞清楚這個問題需要明確兩個問題:

1. 什么是順序表

2. 哈希表的數據結構

先說什么是順序表。WIKI的解釋是:順序表是在計算機內存中以數組的形式保存的線性表,是指用一組地址連續的存儲單元依次存儲數據元素的線性結構。

簡而言之,順序表就是用數組作為底層存儲的數據結構,和鏈表相對。在Java中ArrayList就是一個順序表。而LinkedList就是一個鏈表。

順序表的特點是:表長度等于底層數組的長度,插入新元素的位置為前一元素位置+1.

那么HashTable是以數組作為底層存儲結構的嘛?這就涉及到第二個問題:哈希表的數據結構。

乍一看確實,HashTable最重要的成員變量就是一個叫table的數組。但是仔細看就會發現這個數組的每個元素是一個Entry 對象。那么什么是Entry?

注意Entry的next成員變量:這表明Entry是一個鏈表的節點,每個Entry都包含自己下一節點的引用。

如果我們再仔細閱讀put(key, value) 方法就會發現,當往HashTable插入元素( pair)時HashTable會首先把新元素wrap成一個Entry object,然后根據Key的哈希值選擇table數組的某一位置插入Entry 對象,如果那個位置已經有Entry對象了(即:哈希碰撞),則把新的Entry object添加到舊的Entry的后面成為鏈表中的新節點。

所以邏輯上,HashTable只是用數組最為哈希桶,而每個桶里存儲的是一個鏈表。哈希表的長度顯然不等于table數組的長度而是每個鏈表的長度的總和。哈希表插入元素也是非順序的(不是按數組下標依次插入的,插入的元素也無法按照數組下標檢索)。

話說回來,有沒有實現迭代器Iterator并不能作為是不是順序表的判斷標準。

總結

以上是生活随笔為你收集整理的java hashtable排序_java中哈希表中有迭代器模式的实现,可以认为其是顺序表吗?...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。