Ⅰ java8 新特性中的Stream,如何按照條件替換原來stream中的數據
1、首先利用foreach()方法對Stream元素進行遍歷,如下圖所示。
Ⅱ foreach和map的區別是什麼
foreach和map的3個不同點:
1、map速度比foreach快。
2、map會返回一個新數組,不對原數組產生影響,foreach不會產生新數組。
3、map因為返回數組所以可以鏈式操作,foreach不能。
foreach和map是Javascript常用到的指令。
Javascript產生背景:
JavaScript最初由Netscape的Brendan Eich設計,最初將其腳本語言命名為LiveScript,後來Netscape在與Sun合作之後將其改名為JavaScript。
JavaScript最初受Java啟發而開始設計的,目的之一就是「看上去像Java」。因此語法上有類似之處,一些名稱和命名規范也借自Java。
但JavaScript的主要設計原則源自Self和Scheme。JavaScript與Java名稱上的近似,是當時Netscape為了營銷考慮與Sun微系統達成協議的結果。微軟同時期也推出了JScript來迎戰JavaScript的腳本語言。
發展初期,JavaScript的標准並未確定,同期有Netscape的JavaScript,微軟的JScript和CEnvi的ScriptEase三足鼎立。為了互用性,Ecma國際(前身為歐洲計算機製造商協會)創建了ECMA-262標准(ECMAScript),兩者都屬於ECMAScript的實現。
盡管JavaScript作為給非程序人員的腳本語言,而非作為給程序人員的腳本語言來推廣和宣傳,但是JavaScript具有非常豐富的特性。
1997年,在ECMA(歐洲計算機製造商協會)的協調下,由Netscape、Sun、微軟、Borland組成的工作組確定統一標准:ECMA-262。完整的JavaScript實現包含三個部分:ECMAScript,文檔對象模型,瀏覽器對象模型。
JavaScript是甲骨文公司的注冊商標。Ecma國際以JavaScript為基礎制定了ECMAScript標准。JavaScript也可以用於其他場合,如伺服器端編程(Node.js)。
Ⅲ Lambda 表達式
Lambda 表達式是 JDK8 的一個新特性,可以取代大部分的匿名內部類,寫出更優雅的 Java 代碼,尤其在集合的遍歷和其他集合操作中,可以極大地優化代碼結構。
JDK 也提供了大量的內置函數式介面供我們使用,使得 Lambda 表達式的運用更加方便、高效。
在創建線程並啟動時可以使用匿名內部類的寫法;
IntBinaryOperator是一個介面,使用匿名內部類的寫法調用該方法;
IntPredicate是一個介面。先使用匿名內部類的寫法調用該方法;
Function是一個介面,先使用匿名內部類的寫法調用該方法;
IntConsumer是一個介面,先使用匿名內部類的寫法調用該方法;
Stream將要處理的元素集合看作一種流,在流的過程中,藉助Stream API對流中的元素進行操作。
Stream可以由數組或集合創建,對流的操作分為兩種:
Stream特性:
Stream創建方式有三種:
map,可以將一個流的元素按照一定的映射規則映射到另一個流中;
map,接收一個函數作為參數,該函數會被應用到每個元素上,並將其映射成一個新的元素。
filter,對流中的元素進行條件過濾,符合過濾條件的才能繼續留在流中;
filter,按照一定的規則校驗流中的元素,將符合條件的元素提取到新的流中的操作。
distinct,去除流中的重復元素;
sorted(),自然排序,流中元素需實現Comparable介面;
sorted(Comparator com),Comparator排序器自定義排序。
limit,可以設置流的最大長度,超出的部分將被拋棄;
skip,跳過流中的前n個元素,返回剩下的元素;
flatMap,接收一個函數作為參數,將流中的每個值都換成另一個流,然後把所有流連接成一個流;
map只能把一個對象轉換成另一個對象來作為流中的元素。而flatMap可以把一個對象轉換成多個對象作為流中的元素。
forEach方法,通過 Lambda 表達式的方式遍歷集合中的元素;
forEach,對流中的元素進行遍歷操作,通過傳入的參數去指定對遍歷到的元素進行什麼具體操作。
count,用來獲取當前流中元素的個數;
max&min,可以用來或者流中的最值。
collect,把當前流轉換成一個集合;
collect,把一個流收集起來,最終可以是收集成一個值也可以收集成一個新的集合;流不存儲數據,那麼在流中的數據完成處理後,需要將流中的數據重新歸集到新的集合里。
rece,把一個流縮減成一個值,能實現對集合求和、求乘積和求最值操作;
rece,對流中的數據按照你指定的計算方式計算出一個結果。
文章來自https://www.cnblogs.com/HOsystem/p/16084816.html
Ⅳ Java8,stream().map().collect(Collectors.toList()).forEach()和stream().map().forEach()有啥區別
在stream().map().collect(Collectors.toList()).forEach()中,你的forEach()針對的List;而
stream().map().forEach()針對的是Stream流。從結果操作來看是一樣的,中間過程回產生一些臨時變數。
Ⅳ Java中怎麼遍歷map中value值
Java中遍歷Map對象的4種方法:
1、通過Map.entrySet遍歷key和value,在for-each循環中使用entries來遍歷.推薦,尤其是容量大時。
(5)java8foreachmap擴展閱讀:
關於JAVA的遍歷知識補充:
1、list和set集合都實現了Iterable介面,所以他們的實現類可以使用迭代器遍歷,map集合未實現該介面,若要使用迭代器循環遍歷,需要藉助set集合。
2、使用EntrySet 遍歷,效率更高。