38 votes

Supprimer le premier élément d'un flux dans Java 8

J'ai généré un Stream en Java 8 avec la méthode Files.walk () de la bibliothèque java.nio. Le problème est que la méthode inclut par défaut le chemin racine mais je ne veux pas de cet élément. J'ai résolu dans ce cas avec ce code en utilisant la méthode filter ():

 public void listFiles(String directoryPath) {
    try {
        Path root = Paths.get(directoryPath);
        Files.walk(root,1)
            .filter(x -> !x.equals(root))
            .forEach(System.out::println);
    } catch (IOException ex) {
        System.err.println("Error reading file: " + directoryPath);
    }
}
 

Ma question est de savoir s'il existe un moyen plus élégant de supprimer le premier élément d'un Stream que celui-ci. Par exemple, travailler avec un index dans le Stream ou avec une méthode tail () comme d'autres langages fonctionnels.

76voto

Kayaman Points 12541

Utilisez skip (1) pour ignorer le premier élément.

Ne l'utilisez pas avec des flux parallèles sans lire l'avertissement dans le javadoc.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X