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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Guava函数式编程

發布時間:2025/3/21 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Guava函数式编程 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本章節主要介紹以下幾個接口和類:

  • Function和Functions
  • Predicate和Predicates
  • Supplier和Suppliers

Function和Functions

  • 使用Function接口
    Function接口中只定義了兩個方法:
public interface Function<F,T> {T apply(F input);boolean equals(Object object);}

下面示例是使用java.util.Date類實例作為輸入,輸出字符串類型的時間:

public class DateFormatFunction implements Function<Date,String> {@Overridepublic String apply(Date input) {SimpleDateFormat dateFormat = new SimpleDateFormat("dd/mm/yyyy");return dateFormat.format(input);}}

上面是使用實現接口的方式,也可以使用匿名內部類的方式,如下:

Function<Date,String> function = new Function<Date, String>() {@Overridepublic String apply( Date input) {return new SimpleDateFormat("dd/mm/yyyy").format(input);}};
  • 使用Functions實現類
    Functions實現類提供了很多的方法來結合Function接口的使用。下面示例其中的兩個很實用的方法
    1、 Functions.forMap
    如下的State代表美國:
public class State {private String name;private String code;private Set<City> mainCities = new HashSet<City>();}

假想現在有一Map<String, State> stateMap, 其中的String代表這個州的縮寫名。則使用Functions.forMap方法把其轉換成Function,并根據apply方法輸入具體的州別名,即可獲取其州對象,代碼如下:

Function<String,State> lookup = Functions.forMap(stateMap);//Would return State object for NewYorklookup.apply("NY");

注意:如果使用apply方法時,州的別名不存在時,會拋出IllegalArgumentException異常。
2、 Functions.compose
定義City的對象,如下:

public class City {private String name;private String zipCode;private int population;public String toString() {return name;} }

有這樣的一種情形,給定一個州,返回該州的主要城市名的字符串,各城市名以英文逗號分隔,這種情況下的Function類似以下:

public class StateToCityString implements Function<State,String> {@Overridepublic String apply(State input) {return Joiner.on(",").join(input.getMainCities());}}

更進一步,現在要求給定一州的別名,要求返回該州的主要城市的字符串,這時候Functions.compose可以派上用場了:

Function<String,State> lookup = Functions.forMap(stateMap);Function<State, String> stateFunction = new StateToCityString();Function<String,String> composed = Functions.compose(stateFunction ,lookup);

我們只需要使用composed.apply("NY"),就會返回字符串:"Albany,Buffalo,NewYorkCity"。



作者:Viking_Den
鏈接:https://www.jianshu.com/p/68381e3d3ccc
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯系作者獲得授權并注明出處。

總結

以上是生活随笔為你收集整理的Guava函数式编程的全部內容,希望文章能夠幫你解決所遇到的問題。

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