Je me souviens que lors de ma recherche d'emploi précédente, j'ai rencontré un intervieweur qui m'a posé une question très fondamentale. La question est: il y a 10 éléments dans une liste, et je veux en supprimer 3 éléments maintenant. Comment faire? Je n'y ai pas pensé à l'époque, donc je viens de dire que cette liste avait sa propre méthode de suppression, qui peut être utilisée directement. Il a dit, veuillez l'expliquer en détail. J'ai dit que je voudrais écrire une boucle pour la boucle, le nombre de boucles est la longueur de la liste, puis supprimer directement les éléments que vous souhaitez supprimer dans la boucle.
À ce moment-là, j'ai pensé, et j'ai posé une question aussi simple. L'intervieweur a dit: "Vous pouvez l'essayer vous-même lorsque vous reviendrez. Voyez si vous signalez une erreur si vous écrivez comme vous l'avez dit. Ensuite, j'étais confus. Bien que ce soit une question simple, je n'avais jamais prêté attention à ce petit détail dans le codage quotidien, et les résultats de l'entretien peuvent être imaginés.
Après mon retour, je l'ai essayé une fois et cela a vraiment signalé une erreur. Il s'est avéré que l'opération de liste n'a pas été modifiée pendant la traversée, qu'elle ait été supprimée ou ajoutée, car si de nouveaux éléments étaient ajoutés à la collection pendant la traversée, cela provoquerait une boucle morte. De plus, si des éléments étaient supprimés pendant la traversée, cela entraînerait des problèmes tels que la traversée des limites du tableau suivant dans la traversée. La méthode d'opération générale est la fonction implémentée via la méthode Addall et la méthode de supprimer.
Par exemple, ce qui suit
@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"); List <string> temaddlist = new ArrayList <> (); for (String test: TestList) {if (test.startswith ("1")) {temaddlist.add (test); }} TestList.RemoveAll (TemAddList); System.out.println (JSON.TojSontring (Testlist));}Le résultat de l'impression est: ["2 Yang", "2 Suns", "2 Zhao"]
C'est la véritable façon de fonctionner. Cependant, ce que je veux parler aujourd'hui, c'est en fait la nouvelle méthode de collection de Java 8. Par exemple, créez d'abord une collection temporaire, puis mettez les éléments qui doivent être retirés dans la collection temporaire par traverse, et enfin les supprimer de la collection originale dans son ensemble. De cette façon, vous devez écrire cinq ou six lignes de code, et vous pouvez le faire avec une ligne de code dans Java 8. C'est la ligne de code suivante:
TestList.Removeif (test-> test.startswith ("1"));La signification de ce code est de supprimer des éléments conformes au format de paramètre supprimé, donc si vous imprimez la liste de test après cette ligne de code, vous n'imprimerez pas d'éléments à partir de 1.
Ces petits détails sont en fait accumulés dans le processus de codage quotidien. S'il y a trop de pièges, vous y prêtrez attention lorsque vous l'écrirez plus tard. Tout comme lorsque vous utilisez des égaux en Java, vous mettez toujours des constantes connues devant Equals pour empêcher les exceptions du pointeur nul. Lorsque vous utilisez des expressions Lambda pour les collections, vous devez d'abord juger si la collection est nul à travers objets.nonnull (). Lorsque vous imprimez des objets, n'appelez pas directement la méthode ToString () de l'objet. Vous devez transmettre la méthode d'objet ToString des objets, de sorte que même si l'objet est nul, vous pouvez l'imprimer. La classe d'objets est une nouvelle classe d'outils ajoutée à Java7.
Résumer
Ce qui précède est la méthode nouvellement ajoutée de Java8 dans la collection introduite par l'éditeur pour supprimer. J'espère que ce sera utile à tout le monde. Si vous avez des questions, laissez-moi un message. L'éditeur répondra à tout le monde à temps!