ストリームを手動で短絡する方法はありますか(findFirstなど)?手動でJava 8ストリーム短絡
例:
ワードサイズとアルファベット順の巨大な辞書を想像:
cat
... (many more)
lamp
mountain
... (many more)
だけ準備をし、ラインサイズが4を超えた場合すぐに、最初からリターンをファイルを計算:
read cat, compute cat
...
read tree, compute lamp
read mountain, return
次のコードは非常に簡潔ですが、利点の中に、ストリームの順序を取らない、それは準備ができて、すべての行にあります。述語がfalseを返したとき
try (Stream<String> lines = Files.lines(Paths.get(DICTIONARY_PATH))) {
return lines
// filter for words with the correct size
.filter(line -> line.length() == 4)
// do stuff...
.collect(Collectors.toList());
}
関連:http://stackoverflow.com/questions/20746429/limit-a-stream-by-a-predicate –
あなたは、一般的に 'takewhile'と呼ばれている欲しいです。 [この質問](http://stackoverflow.com/questions/20746429/limit-a-stream-by-a-predicate)によると、それを行うための組み込みの方法はないようだが、あなたはあなた自身。 – Bakuriu