簡體   English   中英

在 Java 中,什么是比 stream().forEach() 更有效但仍然使用流操作的方法?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM