java - 如何使用对象的字符串引用构建网格

标签 java oop

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

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

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

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

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

现在我不知道该怎么做。基本上,我希望能够在一个地方定义我的水果,并简单地在网格中说:“这是一个苹果”。

编辑: 也许这确实是一个基本的 OOP 问题。 如何使用户能够在程序内定义新类型的对象,例如新种类的水果?

最佳答案

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

如果水果类型在运行时“注册”,则输入 int id ,代表一种水果,放入您的 Fruit 对象中,旁边的属性如 double size ,并且还使用一些单独的全局 Map<int, String> ,外面Fruit当然,它为每个 id 分配名称或任何其他描述。您甚至可以将该映射包装到某个“水果寄存器”类中,该类将后续整数分配给每个新的 idint newFruitType(String description) ,将相应的条目写入所讨论的映射并返回新创建的 id .

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

关于java - 如何使用对象的字符串引用构建网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18976334/

相关文章:

java - 带授权的 httpget 请求

java - 如何防止在 JavaFX 的 TableView 中选择另一行

java - 用于多循环的大 O

javascript - .map() 无法访问对象的 this.function

c# - 如何隐藏实现

oop - 最佳实践 : Adding child node to a parent in child constructor or not?

php - 在继承层次结构中重载构造函数是否意味着需要组合?

java - Java中如何确定集合中的类?

PHP OOP 插入数据

java - Java 中 XOR 编码的模糊 Gamma 生成