簡體   English   中英

Java 8 forEach用例

[英]Java 8 forEach use cases

假設你有一個帶有一些字符串的集合,你想要返回每個字符串的前兩個字符(或其他一些操作......)。

在Java 8中,對於這種情況,您可以使用stream()中的mapforEach方法從集合中獲取(可能是其他東西,但現在不重要)。

我個人會主要使用map因為我將forEach與變異集合聯系起來,我想避免這種情況。 我還創建了一個關於性能的非常小的測試但在使用forEach時看不到任何改進(我完全理解小測試不能給出可靠的結果但仍然)。

那么什么是用例,其中一個應該選擇forEach

map是更好的選擇,因為你還沒有嘗試對字符串任何事情,只需將它們映射到不同的字符串。

forEach旨在成為“最終操作”。 因此,它不返回任何東西,而是關於改變一些狀態 - 盡管不一定是原始集合的狀態。 例如,您可以使用它將元素寫入文件,使用其他構造(包括map )來獲取這些元素。

forEach終止流並因為被叫Cosumer副作用而被Cosumer 它不一定會改變流成員。

map使用提供的Function將每個流元素映射到不同的值/對象。 返回Stream <R> ,其中可以執行更多步驟。

forEach終端操作在以下幾種情況下可能很有用:當你想要收集到一些你沒有合適收集器的舊類或者你根本不想收集時,但是在外面某處發送數據時(寫)進入數據庫,打印到OutputStream等)。 在許多情況下,最好的方法是使用map (作為中間操作)和forEach (作為終端操作)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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