LibGDX/Java:仅对来自另一个数组的对象进行排序
我每秒对数组进行30次排序(对象的y值)。现在,为了提高性能,我只想对位置发生变化的对象进行排序。 我把它们放在一个列表中,排序后清除列表。 但是如何只对这些对象进行排序,而不是对整个数组进行排序呢
public CustomOrthogonalTiledMapRenderer(TiledMap map, final GameScreen gameScreen) {
super(map);
this.gameScreen = gameScreen;
pComparator = new Comparator<Object>() {
@Override
public int compare(Object object, Object t1) {
float p1 = object.rectangle.getY();
float p2 = t1.rectangle.getY();
if (p1 > p2) {
return -1; // First bigger
} else if (p1 < p2) {
return 1; // Second bigger
} else
return 0; // They are the same
}
};
}
[…]
gameScreen.game.tiledMapHandler.objects.sort(...); //I want to sort all objects from the lastmodifiedobjects list there
gameScreen.game.tiledMapHandler.lastModifiedObjects.clear();
for (Object o : gameScreen.game.tiledMapHandler.objects) {
//render objects
# 1 楼答案
如果您有一个
List
,那么您可以首先调用subList
来创建一个范围视图,然后对结果进行排序(例如Collections.sort(x.subList(begin,end(),mycomparator)
)如果你有一个对象数组,Java允许你使用Arrays.sort对数组进行排序