有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我正在解决一个需要在网格上分配资源的问题,如下所示:

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

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

所以我现在制作了一个类fruits,我正在添加初始化时需要的fruits。因为水果也需要在运行时添加,所以它不能是枚举,这是我首先尝试的

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

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

编辑: 也许这更像是一个面向对象的基本问题。 我如何让用户能够从程序中定义新类型的对象,比如新种类的水果


共 (1) 个答案

  1. # 1 楼答案

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

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

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