Ich erinnere mich, dass ich während meiner vorherigen Jobsuche auf einen Interviewer gestoßen bin, der mir eine sehr grundlegende Frage gestellt habe. Die Frage ist: Es gibt 10 Elemente in einer Liste, und ich möchte jetzt 3 Elemente daraus löschen. Wie mache ich das? Ich habe damals nicht darüber nachgedacht, also habe ich nur gesagt, dass die Liste eine eigene Entfernungsmethode hat, die direkt verwendet werden kann. Er sagte, bitte erklären Sie es ausführlich. Ich sagte, dass ich eine für Schleife schreiben möchte, die Anzahl der Schleifen ist die Länge der Liste und löscht dann die Elemente, die Sie in der Schleife löschen möchten, direkt.
Zu dieser Zeit, dachte ich und stellte eine so einfache Frage. Der Interviewer sagte: "Sie können es selbst ausprobieren, wenn Sie zurückgehen. Sehen Sie, ob Sie einen Fehler melden, wenn Sie wie Sie sagten. Dann war ich verwirrt. Obwohl dies eine einfache Frage war, hatte ich in der täglichen Codierung nie auf dieses kleine Detail geachtet, und die Interviewergebnisse können sich vorstellen.
Nachdem ich zurückgegangen war, habe ich es einmal versucht und es hat wirklich einen Fehler gemeldet. Es stellte sich heraus, dass der Listenoperation während des Durchquerens nicht geändert wurde, unabhängig davon, ob sie gelöscht oder hinzugefügt wurde, denn wenn die Sammlung während des Durchgangs neue Elemente hinzugefügt würden, würde dies eine tote Schleife verursachen. Wenn Elemente während der Durchquerung gelöscht würden, würde dies zu Problemen führen, z. B. die Grenzen der folgenden Tabelle in der Durchquerung. Die allgemeine Betriebsmethode ist die Funktion, die über die AddAll -Methode und die RemoveAll -Methode implementiert wird.
Zum Beispiel die folgenden
@Testpublic void myTestLearnmore () {list <string> testlist = new ArrayList <> (); testlist.add ("1 yang"); testlist.add ("1 li"); testlist.add ("1 wang"); testlist.add ("1 Zhang"); testlist.add ("2 yang"); testlist.add ("2 sun"); testlist.add ("2 zhao"); Liste <String> temaddlist = new ArrayList <> (); für (String -Test: testlist) {if (test.startsWith ("1") {temaddlist.add (test); }} testlist.removeall (temaddlist); System.out.println (json.tojonstring (testlist));}Das Druckergebnis ist: ["2 Yang", "2 Sonnen", "2 Zhao"]
Dies ist der wahre Weg zum Betrieb. Was ich heute heute sprechen möchte, ist jedoch tatsächlich die neue Sammlungsmethode von Java 8. Erstellen Sie beispielsweise zuerst eine temporäre Sammlung und setzen Sie dann die Elemente ein, die in die temporäre Sammlung durch Traversal entfernt werden müssen, und löscht sie schließlich aus der ursprünglichen Sammlung als Ganzes. Auf diese Weise müssen Sie fünf oder sechs Codezeilen schreiben, und Sie können dies mit einer Codezeile in Java 8 tun. Dies ist die folgende Codezeile:
testlist.removeeif (test-> test.startswith ("1"));Die Bedeutung dieses Codes besteht darin, Elemente zu entfernen, die dem Parameterformat von REMEFIF entsprechen. Wenn Sie also die Testliste nach dieser Codezeile ausdrucken, werden Sie nicht mit 1 Elemente ausdrucken.
Diese kleinen Details werden tatsächlich im täglichen Codierungsprozess angesammelt. Wenn es zu viele Fallstricke gibt, werden Sie darauf achten, wenn Sie es später schreiben. Genau wie bei der Verwendung von Gärme in Java haben Sie immer bekannte Konstanten vor Gleichen gestellt, um Nullzeigerausnahmen zu verhindern. Wenn Sie Lambda -Ausdrücke für Sammlungen verwenden, müssen Sie zunächst beurteilen, ob die Sammlung durch Objekte ist. Nonnull (). Rufen Sie beim Drucken von Objekten die Methode des Objekts toString () nicht direkt auf. Sie müssen die Objekt -Tostring -Methode von Objekten übergeben, damit Sie es auch dann ausdrucken können, wenn das Objekt null ist. Die Objektklasse ist eine neue Werkzeugklasse, die Java7 hinzugefügt wurde.
Zusammenfassen
Das obige ist die neu hinzugefügte Methode von Java8 in der vom Editor vorgestellten Sammlung zum Entfernen. Ich hoffe, es wird für alle hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht. Der Herausgeber wird alle rechtzeitig antworten!