Wie kann man ein Array mit einmaligen Werten initialisieren, bzw. wie kann man prüfen ob in einem Array ein bestimmter Wert enthalten ist?

Ein Array wird fortlaufend mit Zufallswerten belegt, die jedes Mal darauf hin überprüft werden, ob sie bereits im Array enthalten sind.

Der Methode initialize() wird ein Array übergeben, das in einer while-Schleife von vorne durchlaufen wird. Eine int-Variable num, die außerhalb der Schleife lediglich deklariert wurde, wird als erstes in der Schleife mit einem Zufallswert initialisiert. In einer weiteren, inneren Schleife wird das Array bis zum aktuell zu belegenden Index durchlaufen. Hierbei wird, falls vorhanden, der bisherige Inhalt des Arrays mit der Zufallszahl verglichen. Wird ein identischer Wert gefunden, so wird eine boolsche Hilfsvariable auf true gesetzt und die innere Schleife abgebrochen. Die äußere Schleife wird nun fortgesetzt und die Hilfsvariable überprüft. Ist sie false, so kann die Zufallszahl am aktuellen Index gespeichert und der Index selbst inkrementiert werden. Ist sie true, so wird die äußere Schleife bis zum selben Index mit neuer Zufallszahl nochmals durchlaufen.

import java.util.Arrays;
import java.util.Random;

public class SingleValuesArray {

    public static void main(String[] args) {
        int[] arr = new int[10];
        System.out.println(Arrays.toString(initialize(arr)));
    }

    private static int[] initialize(int[] arr) {
        int num, i = 0;
        boolean exists;
        Random rand = new Random();
        while (i < arr.length) {
            num = rand.nextInt(10);
            exists = false;
            for (int j = 0; j < i; j++) {
                if (num == arr[j]) {
                    exists = true;
                    break;
                }
            }
            if (!exists) {
                arr[i] = num;
                ++i;
            }
        }
        return arr;
    }
}

Wenn Ihnen javabeginners.de gefällt, freue ich mich über eine Spende an diese gemeinnützigen Organisationen.