我試圖從番石榴遷移到Java 8 Streams,但無法弄清楚如何處理iterables。這裏是我的代碼,從迭代中刪除空字符串:如何用Streams替換Iterables.filter()?
Iterable<String> list = Iterables.filter(
raw, // it's Iterable<String>
new Predicate<String>() {
@Override
public boolean apply(String text) {
return !text.isEmpty();
}
}
);
注意的是,這是一個Iterable
,而不是Collection
。它可能包含一個無限的項目數量,我無法將其全部加載到內存中。我的Java 8選擇是什麼?
BTW,與蘭巴這段代碼看起來更短:
Iterable<String> list = Iterables.filter(
raw, item -> !item.isEmpty()
);
是什麼類型'raw'? – shmosel
你上哪個版本的番石榴?或者你根本不想使用番石榴? – shmosel
@shmosel我想擺脫Guava並遷移到Java 8 Streams,如果可能的話。也許不是。這就是爲什麼在這裏問。 – yegor256