我试图在 BeeCrowd 中解决这个问题,而不使用大量的 if/elses。

它包括读取使用中的 3 个输入,例如:
vertebrado
ave
carnivoro
Run Code Online (Sandbox Code Playgroud)
并输出这些输入的对应词。
aguia
Run Code Online (Sandbox Code Playgroud)
我比java更了解python,这将是我在python中的解决方案(有效):
vertebrado
ave
carnivoro
Run Code Online (Sandbox Code Playgroud)
然而,我正在努力用 Java 编写一个好的解决方案。这是我当前的 Java 解决方案(也有效):
aguia
Run Code Online (Sandbox Code Playgroud)
该解决方案的明显问题是,以这种方式填充字典是不切实际的。代码已经很大了。如果dict有很多值,有很多“深度”,那么维护起来就会很困难。
有办法减少吗?dictIE,用几行声明和初始化?
按照 MC Empire 的建议使用 Map.of() :
Map<String, Map<String, Map<String, String>>> dict = Map.of(
"vertebrado",
Map.of(
"ave",
Map.of(
"carnivoro", "aguia",
"onivoro", "pomba"
),
"mamifero",
Map.of("onivoro","homem",
"herbivoro","vaca"
)
),
"invertebrado",
Map.of(
"inseto",
Map.of(
"hematofago", "pulga",
"herbivoro", "lagarta"
),
"anelideo",
Map.of(
"hematofago","sanguessuga",
"onivoro","minhoca"
)
)
);
Run Code Online (Sandbox Code Playgroud)
与使用json文件相比,这还可以让您随时进行类型检查,尽管为了真正的类型安全,您需要引入名为 的类Phylum,Class并Order包装您的字符串,而不是保留“字符串类型”的值。