0

我正在解决一个需要我在这样的网格上分配资源的问题:

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

我正在通过一种组合搜索算法来解决我的问题的最佳解决方案。由于这些算法,处理网格中的字符串值更容易。但是,当初始网格确定后,我需要访问一些属性。假设 A 代表苹果,那么我可能需要访问苹果的大小。

所以我现在做了一个类水果,我在初始化时添加了我需要的水果。由于水果也需要在运行时添加,所以它不能是枚举,我首先尝试过。

由于解决方案有时需要多达 10000 次以上的尝试,我认为相互检查字符串比将所有这些字符串变成对象更快,不是吗?

现在我无法理解如何做到这一点。基本上我希望能够在一个地方定义我的水果并简单地在网格中说:“这是一个苹果”。

编辑:也许它确实更像是一个基本的 OOP 问题。如何让用户在程序中定义新类型的对象,比如新种类的水果?

4

1 回答 1

1

String 也是一个对象,它使用字段和方法,就像您的自定义对象一样。那为什么不写你的自定义对象呢?

如果水果类型在运行时“注册” ,则将int id代表一种水果的 放入您的 Fruit 对象中,旁边的属性double size如. 您甚至可以将该映射包装到某个“水果寄存器”类中,该类将后续整数分配给每个新的 with ,将相应的条目写入讨论的映射并返回新创建的。Map<int, String>Fruitidint newFruitType(String description)id

为了避免重复,您可能会使用“索引” Map<String, int>,它将存储所有 id 和放入其中Map<int, String>的描述,但这次的关键是描述。然后,寄存器类将检查索引以查找每个请求的新水果类型的唯一性,然后再将该类型放入地图。如果水果类型是通过 UI 添加的,那么为了帮助用户,您还可以在相应的添加表单中显示索引的排序内容。要保持索引内容排序,您可以将其存储在一些SortedMap<String, int>.

于 2013-09-24T08:40:11.420 回答