Hi Leute, ich wollte einen Algorithmus schreiben, der mir ein Array der Größe de Inhalts nach sortiert. So weit, so gut. Nun wollte ich es schaffen, dass dies für mehrere Arten von Arrays geht (Short,Integer...). Zuerst habe ich es mit generics versucht, doch habe es nicht geschafft, wegen den bekannten Problemen zwischen Arrays und Generischen Typen. Also habe ich folgenden Lösungsansatz:
Das Problem ist jetzt halt, dass bei der Überprüfung das "<" bzw. "==" nicht auf ein Comparable angewandt werden kann. Hat da jemand ne Idee?
Java:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package simplesorter;
/**
*
* @author Phenix
*/
public class Test<T> {
Comparable[] unsortedArray;
Comparable[] sortedArray;
Comparable number;
public Test(T[] array) {
if (array instanceof Integer[]) {
unsortedArray = (Integer[]) array;
this.number=(Integer)number;
}
if (array instanceof Double[]) {
unsortedArray = (Double[]) array;
this.number=(Double)number;
}
if (array instanceof Float[]) {
unsortedArray = (Float[]) array;
this.number=(Float)number;
}
if (array instanceof Short[]) {
unsortedArray = (Short[]) array;
this.number=(Short)number;
}
}
public Comparable[] sortLowestIntFirst() {
sortedArray = new Comparable[unsortedArray.length];
for (int i = 0; i < unsortedArray.length; i++) {
number=unsortedArray[i];
int count = 0; //this variable shows how many elemets are lower as the current number;
int equals = 0; //this variable shows how many elemets are equal to the current number;
for (int j = 0; j < unsortedArray.length; j++) {
if (unsortedArray[j] < number) { //<-----Hier Fehler (Operator '<' cannot be applied to...)
count++;
}
if (unsortedArray[j] == number) {
equals++;
}
}
if (equals > 0) {
for (int k = 0; k < equals; k++) {
sortedArray[count + k] = number;
}
} else {
sortedArray[count] = number;
}
}
return sortedArray;
}
}
Das Problem ist jetzt halt, dass bei der Überprüfung das "<" bzw. "==" nicht auf ein Comparable angewandt werden kann. Hat da jemand ne Idee?