Also der korrekte Weg ist das hier
[code=Java]import java.util.Arrays;
class Spieler implements Comparable<Spieler> {
String name;
int punkte;
public Spieler(String name, int punkte) {
this.name = name;
this.punkte = punkte;
}
public int compareTo(Spieler other) {
return punkte - other.punkte;
}
@Override
public String toString() {
return name+": "+punkte;
}
}
public class Test {
public static void main(String[] args) {
Spieler[] spieler = {
new Spieler("Paul", 4),
new Spieler("Peter", 2),
new Spieler("Fritz", 5),
new Spieler("Max", 3)
};
Arrays.sort(spieler);
for(Spieler s: spieler) {
System.out.println(s);
}
}[/code]
Aber, wenn du unbedingt getrennte Arrays verwenden willst, musst du dir halt eine Methode schreiben die Arrays sortieren kann und dabei die Beziehung zwischen den Arrays berücksichtigt.
Das sähe dann so aus
[code=Java]import java.uitl.Arrays;
import java.util.Comparator;
public class Test {
@SuppressWarnings("unchecked")
public static void sortArrays(Object[] ... arrays) {
Comparator<Object[]> comp = new Comparator<Object[]>() {
public int compare(Object[] o1, Object[] o2) {
return ((Comparable)o1[0]).compareTo(o2[0]);
}
};
Object[][] temp = new Object[arrays[0].length][arrays.length];
for(int i = 0; i < arrays[0].length; i++) {
for(int j = 0; j < arrays.length; j++) {
temp[i][j] = arrays[j][i];
}
}
Arrays.sort(temp, comp);
for(int i = 0; i < arrays[0].length; i++) {
for(int j = 0; j < arrays.length; j++) {
arrays[j][i] = temp[i][j];
}
}
}
public static void main(String[] args) {
String[] namen = {
"Paul", "Peter", "Fritz", "Max"
};
Integer[] punkte = {
4,2,5,3
};
sortArrays(punkte, namen);
for(int i = 0; i < namen.length; i++) {
System.out.println(namen[i] + ": " + punkte[i]);
}
}
}[/code]
Ist aber sehr unschöner Code. Also ich würde die erste Variante nehmen.