簡體   English   中英

如何使用對對象的字符串引用構造網格

[英]How to structure a grid with string references to objects

我正在解決一個問題,需要我在這樣的網格上分配資源:

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

我正在通過組合搜索算法為自己的問題找到最佳解決方案。 由於存在這些算法,因此在網格中處理String值更加容易。 但是,當初始網格確定后,我需要訪問一些屬性。 說A代表蘋果,那么我可能需要訪問蘋果的大小。

因此,我現在制作了一個類的水果,並添加了初始化所需的水果。 由於還需要在運行時中添加水果,因此不能一一列舉,我首先嘗試了一些方法。

由於該解決方案有時需要多達10000次以上的嘗試,因此我認為相互比較Strings的速度更快,然后將所有這些Strings變成對象不是嗎?

現在我無法理解該如何做。 基本上,我希望能夠在一個地方定義我的水果,然后在網格中簡單地說:“這是一個蘋果”。

編輯:也許確實更多是一個基本的OOP問題。 我如何使用戶可以在程序中定義新的對象類型,例如新的水果?

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

如果在運行時“注冊”了水果類型,則將表示一種水果的int id放到您的Fruit對象中,除了double size類的屬性外,還要在Fruit外部使用一些單獨的全局Map<int, String> ,它為每個ID分配名稱或任何其他描述。 您甚至可以將該映射包裝到一些“水果寄存器”類中,該類使用int newFruitType(String description)將后續整數分配給每個新的id ,將各自的條目寫入所討論的映射,並返回新創建的id

為了避免重復,您可以使用“索引” Map<String, int> ,它將存儲放置在Map<int, String>所有id和描述,但是這次的關鍵是描述。 然后,注冊類將僅在索引中檢查所請求的每種新水果類型的唯一性,然后再將該類型放入地圖中。 如果通過UI添加水果類型,那么為了幫助用戶,您還可以在相應的添加表單中顯示索引的排序內容。 為了使索引內容保持排序,您可以將其存儲在SortedMap<String, int>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM