Java,二维数组排序

标签 java arrays sorting

我是 Java 的新手,但正在学习它。但是,我无法理解为什么我在此处找到的这个示例不起作用:

开始上课时:

String[][] spritesPaint = new String[20][20];

在方法中:

for (int funct1 = 0; funct1 <= 2; funct1++) {
    if (funct1 == 0) {
        for (int funct2 = 0; funct2 < rEnemyNumber; funct2++) {
            spritesPaint[0][funct2] = new Integer(rEnemyY[funct2])
                    .toString();
            spritesPaint[1][funct2] = rEnemyGraphic[funct2];
        }
    } else if (funct1 == 1) {
        Arrays.sort(Integer.valueOf(spritesPaint[0].toString()),
                new Comparator<Integer[]>() {
                    @Override
                    public int compare(final Integer[] entry1,
                            final Integer[] entry2) {
                        final Integer time1 = entry1[0];
                        final Integer time2 = entry2[0];
                        return time1.compareTo(time2);
                    }
                });

    } else if (funct1 == 2) {
        for (int funct3 = 0; funct3 < rEnemyNumber; funct3++) {
            if (rEnemyCheck[funct3] == true) {
                nextPaint = getImage(base, rEnemyGraphic[funct3]);
                System.out.println("Next: " + nextPaint);

                g.drawImage(nextPaint, rEnemyX[funct3] + worldCenterX,
                        rEnemyY[funct3] + worldCenterY, this);
            }
        }
    }
}

基本上,我想要做的是有一个二维数组,我在其中存储对象在屏幕上的 Y 位置和也与该对象相关的图像路径,然后按 Y 位置整数对其进行排序。这应该允许我以正确的顺序将元素绘制到屏幕上以获得等距透视图。

但是,我一直收到这个错误:

The method sort(T[], Comparator<? super T>) in the type Arrays 
is not applicable for the arguments (Integer, new Comparator<Integer[]>(){})

请帮助我,我已经绞尽脑汁好几个小时试图理解为什么我现在会收到这个错误。

最佳答案

Integer.valueOf(spritesPaint[0].toString()) 是一个整数,但是根据您的描述,您似乎想要对一维数组中的字符串进行排序 spritesPaint[0] 就好像它们是整数一样。这是一个可以做到这一点的修改:

Arrays.sort(spritesPaint[0], new Comparator<String>() {
    @Override public int compare(final String entry1, final String entry2) {
        final Integer time1 = Integer.valueOf(entry1);
        final Integer time2 = Integer.valueOf(entry2);
        return time1.compareTo(time2);
    }
});

或者,如果您尝试按数组第二维的第一个元素对数组的第一维进行排序,请修改如下:

Arrays.sort(spritesPaint, new Comparator<String[]>() {
    @Override public int compare(final String[] entry1, final String[] entry2) {
        final Integer time1 = Integer.valueOf(entry1[0]);
        final Integer time2 = Integer.valueOf(entry2[0]);
        return time1.compareTo(time2);
    }
});

关于Java,二维数组排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14367017/

相关文章:

java - ORA-04054 : database link GMAIL. COM 不存在

java - 如何在客户端的 Eclipse Milo 中处理断开连接/重新连接?

javascript - 需要有关 inArray 的帮助

linux - linux 排序是否有不兼容的参数

c - 使用 ASM 内联汇编(64 位)进行冒泡排序的奇怪排序问题

mysql - 如何使用 MySQL 实现二进制搜索?

java - 如何为工具栏创建复选框?

java - 从 POJO 调用基于 Spring 的 Web 应用程序类

javascript - 在数组上均匀分布 bool 值(Javascript)

javascript - 在 JavaScript 中用 map 方法替换 for 循环