首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何根据实体的Y值对ArrayList进行排序?

如何根据实体的Y值对ArrayList进行排序?
EN

Stack Overflow用户
提问于 2019-06-17 11:05:25
回答 2查看 258关注 0票数 0

我正在制作一个游戏,在那里我可以通过点击按钮生成士兵。所有这些士兵都将被添加到一个名为ArrayList的entity_walking_right_array中。我还为正在向左行走的实体提供了另一个ArrayList。

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

当我孕育士兵时,他们中的一些人在逻辑上会比其他人有更高的y值或y位置,但当他们被创造得较晚时,比y值较低的士兵更高,他们就会在他们上面。这导致士兵在他们背后的时候被呈现在士兵之上。(例如,脚在y值较低的士兵面前)

然后我让士兵们这样做:

代码语言:javascript
运行
复制
for (entity_walking_right blue : entity_walking_right_array) {
    blue.render(game.batch);
}

我发现,当我使用那些士兵的y值( entity_walking_right.getY();是一个浮点数)对ArrayList进行排序时,它们应该按照正确的顺序呈现。至少我希望这样做是正确的。

我已经尝试过使用entity_walking_right_array,sort(...)Collections.sort或一些对我来说完全陌生的Lambda函数。我也尝试过使用compareTo (我很难找到这个问题),但是它给了我一个错误,它基本上说compareTo不作为一个函数存在。

我发现的任何代码对我并没有真正的帮助,我试图在两天内解决这个问题,这也是我写这个问题的原因。

编辑:

我发现了这个问题。

Sort ArrayList of custom Objects by property

当我试着用

代码语言:javascript
运行
复制
Collections.sort(entity_walking_right_array,
    (o1, o2) -> o1.getY().compareTo(o2.getY()));

它简单地说:“无法解决方法‘compareTo(浮子)’。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-17 11:47:56

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

代码语言:javascript
运行
复制
entity_walking_right_array.sort(Comparator.comparingDouble(entity_walking_right::getY));

代码语言:javascript
运行
复制
entity_walking_right_array.sort(Comparator.comparingDouble(entity_walking_right::getY).reversed());

取决于排序顺序。

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

票数 0
EN

Stack Overflow用户

发布于 2019-06-17 11:43:07

它简单地说:“无法解析方法‘compareTo (浮点)’。您需要使用方法比较而不是compareTo,并将您想要比较的两个对象作为参数传递。https://docs.oracle.com/javase/7/docs/api/java/util/Comparator.html

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56630013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档