I was trying to count the number of unique words in a text file. For the sake of simplicity, my current file content is:
This is a sample file
My attempt is:
long wordCount = Files.lines(Paths.get("sample.txt")) .map(line -> line.split("//s+")) .distinct() .count(); System.out.println(wordCount);
This compiles and runs fine, but results in
1, while it should be
You are mapping each line to an array (transforming a
Stream<String> to a
Stream<String>, and then count the number of array elements (i.e. the number of lines in the file).
You should use
flatMap to create a
Stream<String> of all the words in the file, and after the
count() operations, you'll get the number of distinct words.
long wordCount = Files.lines(Paths.get("sample.txt")) .flatMap(line -> Arrays.stream(line.split("//s+"))) .distinct() .count();