web-dev-qa-db-fra.com

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

J'ai généré un Stream dans 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.

27
Manolo Pirolo

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.

47
Kayaman