Methoden HashSet Objekt mit Zufallszahlen befüllen

TheJonas

Mitglied
Hallo ich habe folgende Aufgabenstellung für die Uni zu erfüllen und habe ein paar Fragen.


Implementiere die Methode List<Integer>
createSortedListOfUniqueRandoms(int n, ListType type, long seed),
die eine Liste der Länge n erzeugt. In der Liste sollen nur nicht-negative
Integer-Werte zwischen 0 und MAX VALUE-1 aufsteigend sortiert verwaltet
werden. Die einzelnen Integer-Werte sollen keine Duplikate enthalten.
Ob eine ArrayList oder eine LinkedList erzeugt wird, wird über den ListType
type festgelegt.
Man soll den Zufallszahlengenerator
random verwenden und mit dem seed-Wert initialisieren.
Zudem soll man die Klasse HashSet verwenden, um n Werte ohne Duplikate
zu erzeugen. Transformieren Sie das HashSet-Objekt in ein List-Objekt.
Abschließend soll die Liste sortiert werden.

Java:
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Random;
import java.util.Set;

public class BinaryListSearch {

    public enum ListType {
        ARRAYLIST, LINKEDLIST
    }

    /*
    * Maximal zulässiger Wert in der Liste
    */
    public static final int MAX_VALUE = 500000;
 
    /**
    * Erzeugt eine Liste mit ganzen Zahlen, aufsteigend sortiert.
    *
    * @param n Listengröße.
    * @param type Listentyp, ob ArrayList oder LinkedList.
    * @param random
    * @param Seed für Zufallszahlengenerator
    *
    * @return Liste mit ganzen, positiven Zufallszahlen.
    */
    public List<Integer> createSortedListOfUniqueRandoms(int n, ListType type, long seed) {
  
        //Zufallszahlengenerator
        Random random = new Random(seed);
        //Menge zum Verwalten der Zahlen
        Set<Integer> ints = new HashSet<Integer>();
  
        // Ergebnisliste
        List<Integer> res = null;
        if (type == ListType.ARRAYLIST) {
            res = new ArrayList<Integer>();
        } else if (type == ListType.LINKEDLIST) {
            res = new LinkedList<Integer>();
        }

        // TODO Implementieren
  
        return res;
    }
}

Die Fragen die sich nun stellen sind, wie befülle ich mit Hilfe der Random-Methode das HashSet-Objekt mit Zufallszahlen ohne Duplikate? Und wie transformiere ich anschließend mein HashSet-Objekt in ein List-Objekt? Ich würde mich sehr über eine Antwort freuen.

Natürlich habe ich eine Lösung aber diese wurde über ein weiteres List-Objekt gelöst und nicht über das retunieren von res.

Java:
    public List<Integer> createSortedListOfUniqueRandoms(int n, ListType type, long seed) {

        //Zufallszahlengenerator
        Random random = new Random(seed);
        //Menge zum Verwalten der Zahlen
        Set<Integer> ints = new HashSet<Integer>();

        // Ergebnisliste
        List<Integer> res = null;
        if (type == ListType.ARRAYLIST) {
            res = new ArrayList<Integer>();
        } else if (type == ListType.LINKEDLIST) {
            res = new LinkedList<Integer>();
        }

        // TODO ab hier bitte implementieren
     
         int i = 0, j = 0;
        while ( i <= n ) //n=25
        {
            j++;
            int b = random.nextInt();
            boolean bRet;
            if (b >= 0 && b < MAX_VALUE-1)
            {
                bRet = ints.add(b);
                if(bRet)
                    i++;
            }

        }

        List<Integer> list = new ArrayList<Integer>(ints);
     
        Collections.sort(list);
        return list;
   }

MfG Jonas
 
Zuletzt bearbeitet:
Die Fragen die sich nun stellen sind, wie befülle ich mit Hilfe der Random-Methode das HashSet-Objekt mit Zufallszahlen ohne Duplikate?
HashSets enthalten per Definition keine Duplikate - du musst also nur so lange zufällige Zahlen adden, bis genug drin sind.

Und wie transformiere ich anschließend mein HashSet-Objekt in ein List-Objekt?
ArrayList und LinkedList haben beide einen Konstruktor und eine addAll, die beiden eine Collection entgegen nehmen 😉
 

Zurück
Oben