2016-11-26 91 views
0

想知道是否有一種方法可以爲HashMap中的每個元素獲取唯一的整數鍵。我已經考慮了hashCode(),但實現了唯一的密鑰並不能保證。可以使用各種算法編寫單獨的程序,但在Java中尋找一些內置解決方案的輕量級。 HashMap將有最多100個元素。有沒有辦法獲得HashMap <String,String>中元素的唯一int鍵?

+0

搜索「完美散列函數」。一般來說,如果不知道輸入信息就無法知道。它通常也不適用於具有不同容量並應用次散列函數的HashMap。這是一件好事,HashMap也使用「equals」 - 散列碼僅用於初始桶選擇。 – user2864740

+5

這聽起來像一個XY問題。 *爲什麼*你想要一個整數鍵? – chrylis

+0

@chrylis它具有嵌入在其中已經使用SparseArray(SparseBooleanArray)的代碼中,不幸的是SparseArray要求整數作爲密鑰。給你更多的細節條目會像的HashMap(「巴黎」,「------------」),並在sparseArray狀態將使用INT鍵 – Girish

回答

2

如果你只是需要一個唯一的ID您可能使用LinkedHashMap其(Javadoc中)定義了迭代順序,這通常是在哪個鍵被插入到地圖(插入順序)順序,如果您之後獲得keySet,則可以構建一個ArrayList,然後使用該List的索引作爲您的唯一標識

0

查看Apache Commons中的HashCodeBuilder。這與你將要獲得的結果差不多 - 你只需要指定你想要的哈希值就可以考慮到。什麼可能使它適用於你,你可以添加任何東西,包括你選擇的常量 - 所以如果你想添加地圖索引或任何你能想到的保證唯一性的東西,你可以。

Their documentation here has a pretty good example.

這只是超級靈活的,所以它應該使這更容易,無論如何!

相關問題