面試複習之java stream
阿新 • • 發佈:2020-12-16
一些隨筆和一些知識點。
說實在的,stream在對日專案裡不常用的東西,很多人看不懂,程式碼維護就會很難,整體對日專案的水平確實就那樣,令人堪憂。
最近有面試官問我Function和Consumer的問題,我也沒複習一時之間也沒答出來,一是沒複習到二是6個月沒碰java都忘記了。後話。。。。
我談談理解吧:也不是從哪抄過來的。
我們知道java stream 是java提供的一種面向函式式的程式設計方式 ----大前提!
其實就是說java stream 提供了一套規範的函式式介面和一套具體實現
①一套規範的函式式介面 位於java.util.function下
沒那麼複雜,常用的就那麼幾個 Function,Consumer,Supplier,Predicate
* @param <T> the type of the input to the function * @param <R> the type of the result of the function public interface Function<T, R> { // Applies this function to the given argument. // 顧名思義了 具體處理就寫在這裡 R apply(T t); // static <T> Function<T, T> identity() {return t -> t; } // default <V> Function<T, V> andThen(Function<? super R, ? extends V> after) { Objects.requireNonNull(after); return (T t) -> after.apply(apply(t)); }
②一套具體實現 位於java.util.stream下
這個稍微複雜一些,單獨看原始碼,不如在網上找一些理論的基礎上便理解邊看。
https://www.runoob.com/java/java8-streams.html
上面這個地址就有!
其實說白了就是
-
stream()− 為集合建立序列流。
-
parallelStream()− 為集合建立並行流。