2013-12-10 36 views
1

我想創建一個「進程」對象,其中包含幾個不同的字段,這些字段由唯一的進程ID標識。我需要能夠創建這些對象的可變數量的實例,更新特定對象中的字段,並在完成對象實例時刪除對象實例,同時保留對象的其他實例。我預計任何時候少於5000個過程對象的實例。使用數組與哈希與設置?

我閱讀了關於數組和哈希集合,我不知道什麼對象最好跟蹤我的過程對象的多次出現,並使其更有效地找到用於更新或刪除的特定過程對象的正確實例。

我一直在考慮使用哈希作爲進程ID,但哈希類有一個值,我不認爲我的進程對象是一個值。

我會繼續研究,但在正確的方向一推,將不勝感激,

預先感謝您。

+0

有很多方法叫做Process#pid和Thread :: list:http://www.ruby-doc.org/core-2.0.0/Process.html#method-c-pid http:// www。 ruby-doc.org/core-2.0.0/Thread.html#method-c-list –

+0

散列的每個成員都有一個鍵和一個值。在你的應用程序中,如你所建議的那樣,密鑰將是進程ID。也許你誤解了在這種情況下「價值」的含義。它是任何Ruby對象,它可以是一個文字,如7或:cat,或者像一個哈希數組,它的鍵是字符串,值是方法的複雜數組。 –

+0

想象一個集合是一個沒有值的哈希,只有鍵。在實踐中,Set具有比Hash更類似數組的行爲。對於流程表,我可能會使用Hash,因爲它基本上是隨機訪問,所以它是最快的。使用正常的散列分配和['delete'](http://www.ruby-doc.org/core-2.0.0/Hash.html#method-i-delete)來添加和刪除元素很容易。 –

回答

0

我一直在思考散列的進程ID,但哈希類有一個值,我不認爲我的過程對象是一個值?

你可以在Ruby哈希中存儲任何東西。

這使得散列存儲信息一個夢幻般的方法。