[JAVA] Hinzufügen, wenn nicht in Set, Fehlermeldung, wenn

Wenn Sie beispielsweise "zufällig aus einer Liste von etwas auswählen und die bereits ausgewählten Elemente in das Set aufnehmen" möchten, Es ist sehr wahrscheinlich, dass "wenn das ausgewählte Element nicht im Set enthalten ist, wird es hinzugefügt, und wenn dies der Fall ist, wird die Fehlermeldung verarbeitet". Das ist intuitiv

Fügen Sie hinzu, wenn nicht, Fehler, wenn


Set<Integer> set = new HashSet<>();
for (int i = 0; i < 10; i++){
    int r = (int)(Math.random() * 10);
    if (!set.contains(r)) {
        set.add(r);
    } else {
        System.out.println(r + "Ist schon drin");
    }
}

Auf diese Weise möchte ich schreiben, dass ich vor dem Einfügen mit enthält überprüfen sollte. Sie können es jedoch tatsächlich so schreiben.

Fehler, wenn nicht hinzugefügt


Set<Integer> set = new HashSet<>();
for (int i = 0; i < 10; i++){
    int r = (int)(Math.random() * 10);
    if (!set.add(r)) {
        System.out.println(r + "Ist schon drin");
    }
}

Sie können es plötzlich hinzufügen und einfügen, ohne vorher zu prüfen, ob es enthalten ist.

Eigentlich sehe ich nicht viel Licht, aber füge Sammlungsschnittstelle einschließlich Set hinzu Die Methode gibt einen Booleschen Wert zurück. Mit Blick auf den Inhalt,

Stellen Sie sicher, dass das angegebene Element in dieser Sammlung gespeichert ist (optionaler Vorgang). Gibt true zurück, wenn sich die Auflistung infolge dieses Aufrufs geändert hat. Diese Auflistung erlaubt keine doppelten Elemente und gibt false zurück, wenn das angegebene Element bereits enthalten ist.

add ist keine "add" -Methode, sondern eine "Garantie, dass das Element vorhanden ist" -Methode und gibt das Ergebnis zurück, ob sich die Auflistung davor oder danach geändert hat. Wenn im Fall von Set das einzufügende Element bereits vorhanden ist, wird es nicht hinzugefügt. Das heißt, Set wird nie geändert, daher wird false zurückgegeben. Dies kann verwendet werden, um zu beurteilen, "ob es enthalten war oder nicht". Wenn es nicht vorhanden ist, wurde die Hinzufügung bereits abgeschlossen, sodass der hinzuzufügende Prozess nicht neu geschrieben werden muss, wenn er nicht vorhanden ist.

Obwohl

Der Code muss schwer intuitiv zu lesen sein. Gibt es eine andere Szene als Set, die die Eigenschaften von Collection # add ... nutzen kann?

Recommended Posts

Hinzufügen, wenn nicht in Set, Fehlermeldung, wenn
Fehler in ./gradlew: Symbol nicht gefunden
Die Gerätefehlermeldung wird nicht richtig angezeigt.
Maven [ERROR] Bootstrap-Klassenpfad nicht mit -source 1.7 festgelegt
ffi-Bibliothek nicht geladen: Fehler in /opt/brew/opt/libffi/lib/libffi.6.dylib behoben
Schreiben Sie keinen Code, wenn (isAdmin == true) in Java
Docker Compose startet nicht mit der Fehleranzeige docker.credentials.errors.InitializationError
[Fehler] Die App wird in der Produktionsumgebung nicht angezeigt
Legen Sie CookieSpec in HttpClient 4.3 fest
Ich möchte das Flash-Attribut im Frühjahr, auch wenn ich einen Reverse-Proxy festgelegt habe! (TU es nicht)
Wenn ein Fehler auftritt, obwohl die Validierung nicht festgelegt ist
Was tun, wenn FacesMessage festgelegt, aber nicht angezeigt wird?
Wenn die Submodul-Assets nicht im Play Framework gefunden werden
Überprüfen Sie, ob Ethereum-Transaktionen nicht im Block enthalten sind