【问题标题】:LibGDX/Java: Only sort objects from another ArrayLibGDX/Java:只对另一个数组中的对象进行排序
【发布时间】:2017-03-07 16:59:14
【问题描述】:

我每秒对数组进行 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

【问题讨论】:

    标签: java arrays performance sorting libgdx


    【解决方案1】:

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

    如果您有一个对象数组,Java 允许您使用Arrays.sort 对某个范围内的数组进行排序。

    【讨论】:

      猜你喜欢
      • 2019-02-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-20
      • 2016-06-02
      • 1970-01-01
      相关资源
      最近更新 更多