gpt4 book ai didi

java - 如何按实体的 Y 值对实体的 ArrayList 进行排序?

转载 作者:行者123 更新时间:2023-12-02 04:22:07 24 4
gpt4 key购买 nike

我正在制作一款游戏,只需单击按钮即可生成士兵。所有这些士兵都将添加到名为 entity_walking_right_array 的 ArrayList 中。我还有另一个用于向左行走的实体的 ArrayList。

我还有另一个类,其中确定或绘制士兵的 x、y 位置、动画等。所有士兵都有一个介于屏幕高度和 450 像素之间的随机 Y 值。

当我生成士兵时,其中一些士兵在逻辑上会比其他士兵具有更高的 y 值或 y 位置,但是当这些士兵稍后创建时,比 y 值较低的士兵更晚,它们将被渲染在他们之上。这导致士兵在逻辑上应该在士兵后面时却被渲染在士兵之上。 (例如脚在y值较低的士兵的脸上)

然后我像这样渲染士兵:

for (entity_walking_right blue : entity_walking_right_array) {
blue.render(game.batch);
}

我发现当我使用这些士兵的 y 值( entity_walking_right.getY(); 是一个 float )对 ArrayList 进行排序时,它们应该以正确的顺序呈现。至少我希望这是正确的方法。

我已经尝试过使用entity_walking_right_array,sort(...) , Collections.sort或其中一些Lambda对我来说全新的功能。我也尝试过使用 compareTo (不幸的是,我再也找不到这个问题了)但它给了我一个错误,基本上说 compareTo只是不作为函数存在。
我发现的任何代码都没有真正帮助我,我现在正在努力解决这个问题两天,这就是我写这个问题的原因。
编辑:
我已经找到问题了。
Sort ArrayList of custom Objects by property
当我尝试使用

Collections.sort(entity_walking_right_array,
(o1, o2) -> o1.getY().compareTo(o2.getY()));

它只是说“无法解析方法‘compareTo(float)’。

最佳答案

在比较原始类型时,您不能像链接问题中那样使用compareTo,因此您需要编写自己的类型或使用预定义的类型

entity_walking_right_array.sort(Comparator.comparingDouble(entity_walking_right::getY));

entity_walking_right_array.sort(Comparator.comparingDouble(entity_walking_right::getY).reversed());

取决于排序顺序。

并且请使用java标准命名,entity_walking_right ->entityWalkingRight

关于java - 如何按实体的 Y 值对实体的 ArrayList 进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56630013/

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