函數(shù)式接口

一、什么是函數(shù)式接口太伊?

(1)怎抛、只包含一個抽象方法的接口,稱為函數(shù)式接口渠概。

(2)、你可以通過Lambda表達式來創(chuàng)建該接口的對象嫂拴。(若Lambda表達式拋出一個受檢異常播揪,那么該異常需要在目標(biāo)接口的抽象方法上進行聲明)。

(3)筒狠、我們可以在任意函數(shù)式接口上使用@FunctionalInterface注解猪狈,這樣做可以檢查它是否是一個函數(shù)式接口,同時javadoc也會包含一條聲明辩恼,說明這個接口是一個函數(shù)式接口雇庙。

二、自定義函數(shù)

示例代碼一:

@FunctionalInterface
public interface MyNumber{
    public double getValue();
}

示例代碼二:函數(shù)式接口中使用泛型

@FunctionalInterface
public interface MyFunc<T>{
    public  T  getValue(T t);
}

三灶伊、作為參數(shù)傳遞Lambda表達式

示例代碼:

public String strHandler(String str, MyFunction mf) {
        return mf.getValue(str);
    }
作為參數(shù)傳遞Lambda表達式:
String trimStr = strHandler("\t\t 你是大傻逼       ", (str) -> str.trim());
String upperStr = strHandler("abcdefg", (str) -> str.toUpperCase());
String newStr = strHandler("我大望江威武", (str) -> str.substring(2, 5));

作為參數(shù)傳遞Lambda表達式:為了將Lambda表達式作為參數(shù)傳遞疆前,接收Lambda表達式的參數(shù)類型必須是與該Lambda表達式兼容的函數(shù)式接口的類型。

四聘萨、Java內(nèi)置四大核心函數(shù)式接口

在學(xué)習(xí)lambda表達式的時候竹椒,我們知道,要使用lambda表達式米辐,我們就要創(chuàng)建一個函數(shù)式接口胸完,那每次用lambda表達式的時候豈不是很麻煩,這時候翘贮,java給我們內(nèi)置了四大核心函數(shù)式接口赊窥。

1532143805119.png

當(dāng)然择膝,還有一些其他接口。

1532143859908.png

五肴捉、四大接口示例

1腹侣、 Consumer<T> : 消費型接口齿穗,void accept(T t);

代碼示例:

@Test
    public void test() {
        happy(10000,(m) -> System.out.println("大保健花了:"+m));
    }
    public void happy(double  money,Consumer<Double> con) {
        con.accept(money);
    }
2、 Supplier<T> : 供給型接口窃页,T get();

示例代碼:

@Test
    public void test1() {
        List<Integer> numList = getNumList(10, ()->(int)(Math.random()*100 ));
        for (Integer integer : numList) {
            System.out.println(integer);
        }
    }
    
    
    //需求:產(chǎn)生指定個數(shù)的整數(shù)复濒,并放入集合中
    public List<Integer> getNumList(int num,Supplier<Integer> sup){
            List<Integer> list = new ArrayList<>();
            for(int i=0;i<num;i++) {
                
                Integer n = sup.get();
                list.add(n);
                
            }
            return list;
    }
3、Function<T, R> : 函數(shù)型接口巧颈,R apply(T t);

示例代碼:

@Test
    public void  test2() {
        String trimStr=strHandler("\t\t  你好,world砸泛!   ",(str) -> str.trim());
        System.out.println(trimStr);
        
        
        String sumString=strHandler("Helloworld!",(str)->str.substring(2, 4));
        System.out.println(sumString);
    }
    //需求:用于處理字符串
    public  String strHandler(String str,Function<String,String> fun) {
        return fun.apply(str);
    }
    
4、 Predicate<T> : 斷言型接口蛆封,boolean test(T t);

示例代碼:

    @Test
    public void test3() {
        List<String> list=Arrays.asList("Hello","world","hi","o","123");
        List<String> filterStr = filterStr(list, (str)->str.length()>1);
        for (String string : filterStr) {
            System.out.println(string);
        }
    }
    
    //需求:將滿足條件的字符串,放入集合中
        public List<String> filterStr(List<String> list, Predicate<String> pre){
            List<String> list2=new ArrayList<>();

            for (String str : list) {
                if(pre.test(str)){
                    list2.add(str);
                }
            }
            
            return list2;
        }
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末盏筐,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子砸讳,更是在濱河造成了極大的恐慌,老刑警劉巖绣夺,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異陶耍,居然都是意外死亡,警方通過查閱死者的電腦和手機她混,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進店門烈钞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人坤按,你說我怎么就攤上這事毯欣。” “怎么了臭脓?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵酗钞,是天一觀的道長。 經(jīng)常有香客問我来累,道長砚作,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任嘹锁,我火速辦了婚禮葫录,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘领猾。我一直安慰自己米同,他們只是感情好骇扇,可當(dāng)我...
    茶點故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著面粮,像睡著了一般少孝。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上熬苍,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天韭山,我揣著相機與錄音,去河邊找鬼冷溃。 笑死钱磅,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的似枕。 我是一名探鬼主播盖淡,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼凿歼!你這毒婦竟也來了褪迟?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤答憔,失蹤者是張志新(化名)和其女友劉穎味赃,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體虐拓,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡心俗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了蓉驹。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片城榛。...
    茶點故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖态兴,靈堂內(nèi)的尸體忽然破棺而出狠持,到底是詐尸還是另有隱情,我是刑警寧澤瞻润,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站绍撞,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏楚午。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一阱驾、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧里覆,春花似錦、人聲如沸喧枷。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽戚扳。三九已至,卻和暖如春珠增,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蒂教。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工脆荷, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人苔严。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓孤澎,卻偏偏與公主長得像覆旭,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子型将,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,700評論 2 354

推薦閱讀更多精彩內(nèi)容