2013-09-24 25 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

相关问题