我有散列例如如何獲得下一個值散列
{ 1 => 5, 3 => 6, 5 => 5, 8 => 10, 11 => 11}
,我有一個關鍵的 - 5,我需要得到哈希與接下來的三個鍵值。在這種情況下結果將是:
{ 8 => 10, 11 => 11, 1 => 5}
我該怎麼做?
我有散列例如如何獲得下一個值散列
{ 1 => 5, 3 => 6, 5 => 5, 8 => 10, 11 => 11}
,我有一個關鍵的 - 5,我需要得到哈希與接下來的三個鍵值。在這種情況下結果將是:
{ 8 => 10, 11 => 11, 1 => 5}
我該怎麼做?
你不能。
Ruby哈希是無序的。沒有可靠的「下一個」鍵/值。
碰巧,它們被定購。但這是實施細節。 – 2014-09-05 10:15:58
這不是散列表的常用用例。整個問題的關鍵是能夠有效地查找特定的鍵,而不是按順序遍歷鍵。
如果你想這樣做,你需要選擇另一個數據結構,而不是散列或旁邊的散列(如果你仍然希望有效查找)。例如,如果您知道它們是整數鍵,那麼您可以測試後續的鍵是否存在,直到找到三個鍵,但效率非常低,如果當前鍵是第二高的,那麼尤其是。你會更好地維護一個不同的數據結構。
在這種情況下哪種數據結構更好? – user1531875 2014-09-05 10:27:44
正如其他人所說的,你不能得到'下一對'值。如果你專門爲數字有序對,其中鍵是所有的數字看,你可以做這樣的事情:
h = { 1 => 5, 3 => 6, 5 => 5, 8 => 10, 11 => 11}
sorted_keys = h.keys.sort
sorted_keys.each do |key|
p "#{key} = #{h[key]}"
end
返回:
"1 = 5"
"3 = 6"
"5 = 5"
"8 = 10"
"11 = 11"
什麼數據結構是在這種情況下更好? – user1531875 2014-09-05 10:33:08