我使用C#,但即使您不知道它,它應該很容易跟隨這個問題。類/對象生成唯一的ID
這是我的問題:我有一些對象,我想保留在一個哈希集數據結構,以便我可以查找他們基於int
ID。這些對象具有可變屬性,所以對它們進行散列不是一種選擇(我需要一些關於它們的常量來散列,是的?)。
我所做的是制定如下界面:
public interface IUniqueIDCollection
{
// Can return any int that hasn't been requested yet.
public int RequestUniqueID();
// Undos the requesting of an int
public int ReleaseUniqueID(int uniqueID);
}
我最初的想法是隻儲存在一個遞增的ID的請求的IUniqueIDCollection
內部計數器。但是,一旦ID被髮布,我將不得不跟蹤已被刪除的範圍或個人ID。我認爲後者會更好。但是,如果我使用計數器(或任何循環函數)來生成ID,那麼我會遇到必須通過檢查已經連續請求的ID的序列的問題,因爲一旦計數器迴繞,就不會被釋放。
啓發式是這樣的:假設一次最多需要5000個ID。但是,ID經常會要求併發布。釋放將傾向於發生在範圍內 - 即可能一次請求100個,然後全部100個將在短時間間隔內釋放。
我知道我可以使用一個GUID或東西,而不是一個int,但我想節省ID的空間/帶寬/處理時間。
所以我的問題是:在給出啓發式的情況下,在上面給出的接口中,請求和釋放方法應該按照僞代碼的方式表示?
完美!謝謝! –