import java.util.Arrays;
import java.util.Comparator;
public class Start {
public static class ColumnDoubleComparator implements Comparator {
/**
* Gibt an, dass aufsteigend sortiert werden soll.
*/
public static final int ASC = 1;
/**
* Gibt an, dass absteigend sortiert werden soll.
*/
public static final int DESC = -1;
/**
* Die zu sortierende Spalte.
*/
private int iColumn = 0;
/**
* Die Sortierrichtung.
*/
private int iDirection = ASC;
/**
* Erzeugt einen Comparator, der darauf ausgelegt ist, ein
* 2-Dimensionales Double-Array zu sortieren.
* double arr[][] = new double[5][5];
* arr[0] = Zeile 0
* arr[0][1] = Zeile 0, Spalte 1
*
* @param pColumn
* die Spalte nach der sortiert werden soll.
*/
public ColumnDoubleComparator(int pColumn) {
super();
iColumn = pColumn;
}
/**
* Erzeugt einen Comparator, der darauf ausgelegt ist, ein
* 2-Dimensionales Double-Array zu sortieren.
* double arr[][] = new double[5][5];
* arr[0] = Zeile 0
* arr[0][1] = Zeile 0, Spalte 1
*
* @param pColumn
* die Spalte nach der sortiert werden soll.
* @param pDirection
* die Sortierrichtung
*/
public ColumnDoubleComparator(int pColumn, int pDirection) {
super();
iColumn = pColumn;
iDirection = pDirection;
}
private ColumnDoubleComparator() {
}
public int compare(Object arg0, Object arg1) {
double[] arg0a = (double[]) arg0;
double[] arg1a = (double[]) arg1;
// kleiner
if (arg0a[iColumn] < arg1a[iColumn]) {
return -1 * iDirection;
}
// größer
if (arg0a[iColumn] > arg1a[iColumn]) {
return 1 * iDirection;
}
// gleich
return 0;
}
}
public static void main(String[] args) {
double[][] test = new double[5][5];
System.out.println("Original:");
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
test[i][j] = Math.random();
System.out.print(test[i][j] + "\t");
}
System.out.println();
}
for (int x = 0; x < 5; x++) {
System.out
.println("=================================================================================");
System.out.println("Sortiert nach Spalte " + (x) + ":");
ColumnDoubleComparator lComp = new ColumnDoubleComparator(x,
ColumnDoubleComparator.DESC);
Arrays.sort(test, lComp);
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
System.out
.print((j == x ? "->" : " ") + test[i][j] + "\t");
}
System.out.println();
}
}
}
}