以 Jzombie 模型为例,如果我想查询所有能量等于 5 的人并将他们放在一个列表中,我将有以下代码:
List<Human> human_list = ArrayList<Human>();
Query<Object> query = new PropertyEquals<Object>(context, "energy", 5);
for (Object o : query.query()) {
Human h = (Human)o;
human_list.add(h);
}
但是,human_list 中的 human 的顺序是随机的,并且在不同的模拟运行之间是不同的。这会导致结果不一致的问题,如下所示:
run-1:
[human_2, human_4, human_3, human_5, human_1]
run-2:
[human_1, human_3, human_4, human_2, human_1]
run-3:
[human_5, human_1, human_3, human_5, human_2]
我实际上想用 engergy == 5 查询人类并按他们的 id 对它们进行排序,例如:
[human_1, human_2, human_3, human_4, human_5]
这样当我执行一些进一步的操作时,我总能得到一致的结果。