ich habe eine dynamische ArrayList mit int-Werten. Die int Werte möchte ich nachdem ich die ArrayList gefüllt habe, ordnen. Auf- oder absteigen, egal. Welcher Algorithmus ist am einfachsten zu implementieren? Die int Werte sind eigentlich Strings. Kann man die trotzdem so behandeln, als ob es Zahlen sind? :idea:
die wird an einer anderen stelle des programms aufgerufen. wenn man auf einen button klickt. dann stopt die aufzeichnung der values und die arraylist soll geordnet werden.
Das Problem werden die Strings sein, da die nach lexikografischer Ordnung sortiert werden. Sprich wenn du hier mit dem Vorzeichen - arbeites kommt alles durcheinander.
Ich würde die Values auch in ein Interger ändern, dann gibt es die Probleme nicht.
Da du eine ArrayList verwendest, glaube ich kann man dort nur Objekte speichern, also nimmst du für die Werte die Wrapperklasse Integer.
Beispiel:
Code:
String myString = "5";
Integer myInt = new Integer(myString);
//Zugriff auf den Grunddatentyp int:
int zahl = myInt.intValue();
Sollte das Sortieren immer noch nicht klappen, würde ich mir schnell selbst was basteln, da gibt es ja jede Menge Algorithmen im Netz:
Quicksort
BubbleSort
MergeSort
HeapSort
....
Das Problem werden die Strings sein, da die nach lexikografischer Ordnung sortiert werden. Sprich wenn du hier mit dem Vorzeichen - arbeites kommt alles durcheinander.
Die Methode 'sort' kann aber auch mit einem eigenem "Comparator" aufgerufen werden. Wenn Du Dir also einen eigenen "Comparator" schreibst, so werden die Werte nach deinen Wünschen sortiert.
Erst mal vielen Dank für eure Tipps. Hat mir schon sehr geholfen. Das Sortieren funzt nun auch korrekt. Ich habe einfach int's draus gemacht. Ein paar Fragen bleiben dennoch:
1. Codezeile 4 arbeitet nun nicht mehr ganz korrekt. ich wollte halt doppelte werte ausschliessen. funzt contains() nicht mit ints? wie kann ich das umgehen?
Code:
while(Thread.currentThread().isAlive())
{
// no values twice
if(!collection.contains(o))
{
// and no string values
if(!o.equals("test data ..."))
{
// now add values
collection.add( o );
break;
}
}
break;
}
System.out.println(collection.toString());
2. Wie kann ich auf das letzte Element in der ArrayList zugreifen? Das ist ja das größte Element nach dem ordnen. Welche Möglichkeiten gibts da?