51

I have generated a Stream in Java 8 with Files.walk() method from java.nio library. The problem is that the method includes by default the root path but I do not want this element. I have solved in this case with this code using filter() method:

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); } } 

My question is if there is a way more elegant to remove the first element of a Stream than this. For example working with a index in the Stream or with a tail() method as others functional languages.

1 Answer 1

100

Stream#skip

Use skip(1) to ignore the first element.

Don't use it with parallel streams without reading the disclaimer in the javadoc.

Sign up to request clarification or add additional context in comments.

1 Comment

That's a more elegant way to do this. Very similar to tail() in lisp o scala. Thanks!

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.