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.
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