有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 1 楼答案

    如果您有一个List,那么您可以首先调用subList来创建一个范围视图,然后对结果进行排序(例如Collections.sort(x.subList(begin,end(),mycomparator)

    如果你有一个对象数组,Java允许你使用Arrays.sort对数组进行排序