日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java8 函数式编程_使用Javaslang进行Java 8中的函数式编程

發布時間:2023/12/3 java 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java8 函数式编程_使用Javaslang进行Java 8中的函数式编程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

java8 函數式編程

我們非常高興地在jOOQ博客上宣布一個客座帖子,該帖子由HSH Nordbank的高級軟件工程師Daniel Dietrich (三人的丈夫和父親)撰寫。 他目前作為項目負責人和首席開發人員為金融產品創建定價框架。

除工作外,他還對編程語言,高效算法和數據結構感興趣。 Daniel撰寫了有關使用Java和Scala的Play框架構建Web應用程序的簡短書《 Play Framework Starter》 ,并且最近正在創建Javaslang,這是Java 8的功能組件庫 ,尤其引起了我們的興趣。

當我聽說Java將獲得lambda時,這真是一個激動人心的時刻。 使用函數作為抽象手段的基本思想起源于80年前的“ lambda演算”。 現在,Java開發人員可以使用函數傳遞行為。

List<Integer> list = Arrays.asList(2, 3, 1);// passing the comparator as lambda expression Collections.sort(list, (i1, i2) -> i1 - i2);

Lambda表達式大大降低了Java的冗長性。 新的Stream API彌補了lambda和Java集合庫之間的空白。 仔細觀察顯示,并行流很少或至少謹慎使用。 流不能被重用,并且煩惱的是必須來回轉換集合。

// stream a list, sort it and collect results Arrays.asList(2, 3, 1).stream().sorted().collect(Collectors.toList());// a little bit shorter Stream.of(2, 3, 1).sorted().collect(Collectors.toList());// or better use an IntStream? IntStream.of(2, 3, 1).sorted().collect(ArrayList::new, List::add, List::addAll);// slightly simplified IntStream.of(2, 3, 1).sorted().boxed().collect(Collectors.toList());

哇! 這些是一些用于對整數列表進行排序的變體。 通常,我們要專注于什么,而不是把頭放在如何做上 。 不需要額外的復雜性。 這是使用Javaslang達到相同結果的方法 :

List.of(2, 3, 1).sort();

通常,每種面向對象的語言都有一個命令式核心,Java也是如此。 我們使用條件語句和循環來控制應用程序的流程。

String getContent(String location) throws IOException {try {final URL url = new URL(location);if (!"http".equals(url.getProtocol())) {throw new UnsupportedOperationException("Protocol is not http");}final URLConnection con = url.openConnection();final InputStream in = con.getInputStream();return readAndClose(in);} catch(Exception x) {throw new IOException("Error loading location " + location, x);} }

功能語言使用表達式而不是語句,我們認為是值。 Lambda表達式可幫助我們轉換值。 這是一個使用Javaslang的Try示例:

Try<String> getContent(String location) {return Try.of(() -> new URL(location)).filter(url -> "http".equals(url.getProtocol())).flatMap(url -> Try.of(url::openConnection)).flatMap(con -> Try.of(con::getInputStream)).map(this::readAndClose); }

結果是包含內容的Success或包含異常的Failure 。 通常,與命令式風格相比,此概念更加簡潔,并且可以生成我們可以推理的健壯程序。

希望這篇簡短的介紹引起您對javaslang.com的關注 ! 請訪問該站點以了解有關使用Java 8和Javaslang進行函數式編程的更多信息。

翻譯自: https://www.javacodegeeks.com/2015/05/functional-programming-in-java-8-with-javaslang.html

java8 函數式編程

總結

以上是生活随笔為你收集整理的java8 函数式编程_使用Javaslang进行Java 8中的函数式编程的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。