Java, two dimensional array sort
arrays, java, sorting
Solution
`Integer.valueOf(spritesPaint[0].toString())` is a single integer, however from your description it seems that you want to sort the strings in the 1-dimensional array `spritesPaint[0]` as if they were integers. Here is a modification that will do just that:
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);
}
});
Alternatively, if you are trying to sort the first dimension of the array by the first element of the second dimension of the array, modify as follows:
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);
}
});
Problem
I'm quite new to Java, but getting into it. However, I can't wrap my head around why this example, which I found here, does not work: At start of class: ``` String[][] spritesPaint = new String[20][20]; ``` In method: ``` 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); } } } } ``` Basically, what I want to do is have a two dimensional array where I store Y position of object on the screen and an image path also related to that object, then sort it by the Y position integer. This should allow me to paint elements to the screen in the correct order for an isometric perspective. However, I keep getting this error: ``` The method sort(T[], Comparator<? super T>) in the type Arrays is not applicable for the arguments (Integer, new Comparator<Integer[]>(){}) ``` Please help me, I've been twisting my brain for hours trying to understand why I get this error now.