[英]What is the best way to call a function with the result of a filter operation on a Java stream
[英]In Java what would be the more efficient way than stream().forEach() but still using stream operation?
例如,我有一個字符串列表(可能超過 5000,我需要效率!)。 而且我想對它們中的每一個應用相同的操作,例如拆分或其他操作。
現在我用
List<String> a = ....;
a.stream().forEach(x->{
//some code here...
//maybe a split?
String[] ss=x.split("...");
Arrays.stream(ss).forEach(y->{...});
});
我知道現在它非常低效,但是我該如何改進呢? 順便說一句,不應該使用 parallelStream!
編輯:我嘗試過地圖操作,例如
a.stream.map(x->x.split(...)).collect(Collectors.toList())
但是它比使用 forEach 操作效率更低,盡管代碼看起來更簡潔。
非常感謝您的幫助!
您可以使用 map 函數將字符串映射到所需的值,然后遍歷它們
a.stream().map(s -> s.split("...")).forEach(split -> {});
或者,您可以過濾它們,
a.stream().map(s -> s.split("...")).filter(split -> split.length > 0);
或者你可以收集它們,
a.stream().map(s -> s.split("...")).filter(split -> split.length > 0).collect(Collectors.toList());
你可以用流做很多事情,這些只是一些例子。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.