【发布时间】:2018-11-19 21:43:16
【问题描述】:
需要从文件中返回包含 3 个或更多字母的所有单词的流。有没有更好的方法然后跟随,也许使用 Stream.iterate:
private Stream<String> getWordsStream(String path){
Stream.Builder<String> wordsStream = Stream.builder();
FileInputStream inputStream = null;
try {
inputStream = new FileInputStream(path);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
Scanner s = new Scanner(inputStream);
s.useDelimiter("([^a-zA-Z])");
Pattern pattern = Pattern.compile("([a-zA-Z]{3,})");
while ((s.hasNext())){
if(s.hasNext(pattern)){
wordsStream.add(s.next().toUpperCase());
}
else {
s.next();
}
}
s.close();
return wordsStream.build();
}
【问题讨论】:
-
哪个 Java 版本?
-
您的意思是打电话给
s.next(pattern)吗? -
也许将整个流作为字符串读取,然后用空格(或您使用的任何内容)分割它,然后检查每个流的长度。
-
Java 9。我的意思是:是否可以将这种方法更接近于流样式编写,而根本没有 while 循环
标签: java loops java-stream builder word