2013-09-24 23 views
0

我的工作需要我在這樣一個網格分配資源的問題:如何構建一個網格字符串對象的引用

|A|B|C 
|X|C|X 
|A|X|X 

我工作了我的問題的最佳解決方案通過組合搜索算法的手段。由於這些算法,在網格中處理字符串值更容易。但是,當初始網格結算時,我需要訪問一些屬性。說A是蘋果,那麼我可能需要訪問蘋果的大小。

所以我現在做了一個水果課程,我添加了初始化所需的水果。由於水果需要在運行時添加,因此它不能是枚舉,我首先嚐試了一些東西。

由於解決方案有時需要多達10000次以上的嘗試,因此我認爲檢查字符串是否會更快,然後將所有這些字符串變爲對象不是嗎?

現在我不能得到我的頭如何做到這一點。基本上我想能夠在一個地方定義我的水果,並簡單地在網格中說:「這是一個蘋果」。

編輯: 也許這確實是一個基本的面向對象問題。 如何使用戶能夠從程序中定義新類型的對象,例如新種類的水果?

+0

什麼是分配約束?目前還不清楚你想要做什麼。 – Joni

回答

1

字符串也是一個對象,它像使用自定義對象一樣使用字段和方法。那麼爲什麼不寫你的自定義對象呢?

如果果實類型是在運行時「註冊」,然後把int id,代表着一種水果,爲您的水果對象,屬性旁邊像double size,並且還使用了一些獨立的全球Map<int, String>,外面當然Fruit,其中受讓人名稱或任何其他描述到每個ID。您甚至可以將該地圖包裝到某個「水果寄存器」類中,該類將隨後的整數分配給每個新的idint newFruitType(String description),將相應條目寫入討論的地圖並返回新創建的id

爲了避免重複,您可以使用「索引」Map<String, int>,它將存儲所有編號和描述放在Map<int, String>之內,但這次的關鍵是描述。然後,在將該類型放入地圖之前,註冊類將檢查索引以獲取每種新水果類型的唯一性。如果通過UI添加水果類型,那麼爲了幫助用戶,您也可以在相應的添加表單中顯示索引的已排序內容。爲了保持索引內容的排序,你可以將它存儲在一些SortedMap<String, int>

+0

我的確在考慮爲此使用某種Map。但是如果有人在界面中有一個頁面可以定義新的水果類型,那麼這將如何工作? – Difusio

相關問題