我有以下一般形式,其中this.words
是含有每個元素一個字一個List<String>
的幾類:如何(動態)更改Java流的過濾條件?
public ArrayList<String> wordsInclZ() {
ArrayList<String> results = new ArrayList<>();
this.words.stream()
.filter(word -> word.contains("z"))
.forEach(word -> results.add(word));
return results;
}
我必須要改變的唯一位是過濾條件,即,內部.filter()
表達。這似乎不是一個可怕的複製粘貼的情況,但我想知道是否有可能編寫更整潔的代碼。
是否有簡明的方式來概括此功能?我想我基本上是問我可以和我應該如何將lambda傳遞給.filter()
作爲處理上述方法的其餘功能的一般方法的參數。
此外:您可以使用.collect(Collectors.toList());而不是forEach。然後返回收集的結果。無需定義空的結果列表(爲您的功能) –