gpt4 book ai didi

java - 是否有一种快速方法可以从任何集合/映射中获取与条件列表之一匹配的所有元素?

转载 作者:太空宇宙 更新时间:2023-11-04 13:49:37 24 4
gpt4 key购买 nike

我正在尝试为游戏构建一个搜索功能,以便用户可以看到一种类型的生物(物种、性别以及健康和能量等状态影响)。此搜索运行得非常频繁,几乎持续不断,因此需要尽我所能对其进行优化。

我可以使用 map 、集合、数组等等。我愿意更改程序的其余大部分内容,以使流程更加顺畅。我当前的策略是一堆 HashMap 试图充当易于搜索的索引,而不是迭代牧场中的每个生物。我花了 2 天阅读了太多的 Map 和 List 变体,但它们似乎都没有给我快速检查列表 A 中的每个项目以查看它是否包含列表 B 的成员的能力。这种索引在 Java 中是否可行,或者我应该放弃索引并迭代大对象并立即检查所有条件?

我很确定我完全错了,但我记得你们都喜欢看到上下文的错误代码,所以这里是:

public static HashMap<Integer, Creature> creatures = new HashMap<Integer, Creature>();
public static HashMap<Integer, Species> species = new HashMap<Integer, Species>();
public static HashMap<Integer, Integer> gender = new HashMap<Integer, Integer>();
public static HashMap<Integer, Integer> health = new HashMap<Integer, Integer>();
public static HashMap<Integer, Integer> energy = new HashMap<Integer, Integer>();
public static void newCreature (Creature creature) {
creatures.put(indexPos, creature);
species.put(indexPos, creature.species);
gender.put(indexPos, creature.gender);
health.put(indexPos, creature.health);
indexPos++;
}
public static void searchBy(EnumSet<Species> speciesInclude, boolean[] genderInclude) {
Integer[] index = creatures.keySet().toArray(new Integer[0]);
if (!speciesInclude.isEmpty() && speciesInclude != EnumSet.allOf(Species.class)) {
for (Integer i : index) {
if (!speciesInclude.contains(species.get(i))){
//remove element from array
}
}
}
if (genderInclude[0] != genderInclude[1]) {
for (Integer i : index) {
if (genderInclude[gender.get(i)]) {
//remove element from array
}
}
}
//TODO check against health
//TODO check against energy
//TODO check against more things
}

为什么是的,我对 Java 完全陌生,并且以 PHP/SQL 的方式思考。

最佳答案

没有人以答复形式发布此内容,因此我会将其从“未答复”列表中删除:

不,Java 不是数据库程序,因此没有类似 JOIN 的选项。迭代对象并检查其字段要快得多 - 在 Java 中这不是一个困难的操作。

如果有一个经常被搜索的类别,可以将对象存储在单独的列表中,例如:Map>,但简单的方法是一个很好的方法。谢谢 Radiodef 的帮助。

关于java - 是否有一种快速方法可以从任何集合/映射中获取与条件列表之一匹配的所有元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30448489/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com