ArrayList Integer Wrapper Klasse als Ersatz für normale Arrays

3njoyeD

Mitglied
Guten Abend,

ich habe mir wohl etwas zuviel zugetraut..

Die mir gesetzte Aufgabe ist folgende:

Mit einem Zufallsgenerator zwischen 5 bis 15 Ganzzahlen im 4stelligen Bereich zu generieren
Die Zahlenwerte sollen in eine Arrayliste gespeichert & ausgegeben werden.
Anschließend sollen Sie sortiert (von der kleinsten zur größten Zahl ) & ausgegeben werden
Danach sollen sie geswapt werden, d.h. von der größten bis zur kleinsten Zahl ausgegeben werden.

Ziel ist es mehr mit ArrayListen zu arbeiten & weniger mit normalen Arrays:

Java:
package Testprojekte;

import java.util.ArrayList;
import java.util.Arrays;

public class ZufallsZahlenSortierenMittelsArrayListen {
   
    public static void main(String[] args){
       
         
        // Min Max intialisieren
        byte max = 15;
        byte min = 5;
       
        // Anzahl der Zuffalswerte   
        int randomCountNumbers = (int) (Math.random()*(max-min))+min;
        System.out.println("Anzahl der Zuffalswerte: " + randomCountNumbers);
       
        // Array Liste mit einer Integer Wrapper Klasse
        ArrayList<Integer> randomNumbers = new ArrayList<Integer>();
       
        // Zufallsgenerator Zahlen im 4stelligen Bereich & einfügen in die ArrayListe
        for (int i = 0; i < randomCountNumbers; i++) {
            int minRandomGen = 1000;
            int maxRandomGen = 9999;
            randomNumbers.add((int) (Math.random()*(maxRandomGen-minRandomGen))+minRandomGen);
            System.out.print(randomNumbers.get(i) + " ");
        }
        System.out.println();
        System.out.println("Sortierte Werte: ");
       
   
        // Sortieren mittels Arrays.sort   
        Arrays.sort(randomNumbers);

[B]// hierbei hackt es.. ich kann die Variable randomNumbers nichts sortieren lassen, da sie kein Array ist. [/B]
       
       
        // Ausgeben der sortierten Werte
        for (int i = 0; i < randomNumbers.size(); i++) {
            System.out.print(randomNumbers.get(i) + " ");
        }
       
        System.out.println();
        System.out.println("Geswapte Werte: ");   
       
        for (int i = 0; i < randomNumbers.size(); i++) {
            System.out.print(randomNumbers[randomNumbers.size()-1-i] + " ");
        }
       
// Hier komme ich leider auch nicht weiter, da ich randomNumbers nicht rückwärts auslesen kann, wie man es mit normalen Arrays macht.

       
       
    }
   
}

Kann ich randomNumbers casten oder sollte ich aufwändigere Schritte wie Bubblesort einleiten um meine Aufgabe bewältigt zu bekommen?

lg

3njoyeD
 
Hat funktioniert.
Der Code sieht nun so aus:

Java:
// Sortieren mittels Arrays.sort 
        Collections.sort(randomNumbers);
     
        // Ausgeben der sortierten Werte
        for (int i = 0; i < randomNumbers.size(); i++) {
            System.out.print(randomNumbers.get(i) + " ");
        }
     
        System.out.println();
        System.out.println("Geswapte Werte: "); 
     
        // Ausgeben der geswapten Werte
        for (int i = randomNumbers.size(); i > 0; i--) {
            System.out.print(randomNumbers.get(i-1) + " ");
        }

Danke für die schnelle Hilfe. Allein wäre ich auf "Collections.sort" nicht gekommen.
 
Benutzt du eine IDE ? (NetBeans, Eclipse) Wenn ja hättest du dir die Methoden von randomNumbers ansehen können. (mein Ansatz, s.o.) Und dann hätte es auch funktioniert, aber der Ansatz mit Collections.sort ist schöner (obwohl er laut javadoc genau das tut was ich dir hingeschrieben hatte)
 
Wenn ja hättest du dir die Methoden von randomNumbers ansehen können. (mein Ansatz, s.o.)

Hallo JStein52,

deinen Ansatz habe ich auch als alternative mit eingepflegt.

Wenn ich mir Methoden einzelner Klassen anschauen möchte, mache ich das in der Offiziellen Doku von Oracle. Wie ich das in Eclipse mit beispielhafter Erklärung nachsehen kann weiss ich leider noch nicht.
 
Ich arbeite mit NetBeans wird aber in Eclipse wohl genau so sein. sobald du den Namen des Objektes (in deinem Fall randomNumbers) gefolgt von "." hinschreibst klappt ja eine Liste auf mit allen Methoden die du darauf anwenden kannst. Wenn du eine davon selektierst kriegst du auch gleich die Beschreibung dieser Methode. Und so hättest du ganz schnell die sort-Methode gefunden.
 
Es is doch klar warum Arrays.sort(randomNumbers.toArray()); nicht funktioniert.
Arrays.sort sortiert eben das array, welches du durch randomNumbers.toArray() erzeugt hast, dieses Array ist nun sortiert, aber eben nicht die Liste randomNumbers.

Benutze einfach, wie oben schonmal geschrieben, Collections.sort
 
Es ging mir mit meinem Hinweis ja nicht darum diese Lösung mit Collections.sort in Frage zu stellen sondern dem TE nur Hinweise zu geben wie er weiterkommen kann wenn er mal wieder vor einer Wand steht und nicht weiter weiss.
 
Es ging mir mit meinem Hinweis ja nicht darum diese Lösung mit Collections.sort in Frage zu stellen sondern dem TE nur Hinweise zu geben wie er weiterkommen kann wenn er mal wieder vor einer Wand steht und nicht weiter weiss.
das dachte ich mir schon^^
Mein Beitrag bezog sich auch nicht auf deinen, sondern auf den des TE:
Ich habe es schon mit Arrays.sort(randomNumbers.toArray()); probiert
Kein Syntaxfehler, aber es gibt auch nicht das gewünschte Ergebnis aus.
Sah halt meiner Meinung nach so aus, als ob er weiterhin das ganze mit Arrays.sort lösen wollte^^
 

Neue Themen


Zurück
Oben