posts - 325,  comments - 25,  trackbacks - 0
          //原來的匿名內(nèi)部類
           @Test
           public void test1(){
            Comparator<String> com = new Comparator<String>(){
             @Override
             public int compare(String o1, String o2) {
              return Integer.compare(o1.length(), o2.length());
             }
            };
            
            TreeSet<String> ts = new TreeSet<>(com);
            
            TreeSet<String> ts2 = new TreeSet<>(new Comparator<String>(){
             @Override
             public int compare(String o1, String o2) {
              return Integer.compare(o1.length(), o2.length());
             }
             
            });
           }
           
           //現(xiàn)在的 Lambda 表達(dá)式
           @Test
           public void test2(){
            Comparator<String> com = (x, y) -> Integer.compare(x.length(), y.length());
            TreeSet<String> ts = new TreeSet<>(com);
           }

          *
           * 一、Lambda 表達(dá)式的基礎(chǔ)語法:Java8中引入了一個(gè)新的操作符 "->" 該操作符稱為箭頭操作符或 Lambda 操作符
           *           箭頭操作符將 Lambda 表達(dá)式拆分成兩部分:
           *
           * 左側(cè):Lambda 表達(dá)式的參數(shù)列表
           * 右側(cè):Lambda 表達(dá)式中所需執(zhí)行的功能, 即 Lambda 體
           *
           * 語法格式一:無參數(shù),無返回值
           *   () -> System.out.println("Hello Lambda!");
           *
           * 語法格式二:有一個(gè)參數(shù),并且無返回值
           *   (x) -> System.out.println(x)
           *
           * 語法格式三:若只有一個(gè)參數(shù),小括號(hào)可以省略不寫
           *   x -> System.out.println(x)
           *
           * 語法格式四:有兩個(gè)以上的參數(shù),有返回值,并且 Lambda 體中有多條語句
           *  Comparator<Integer> com = (x, y) -> {
           *   System.out.println("函數(shù)式接口");
           *   return Integer.compare(x, y);
           *  };
           *
           * 語法格式五:若 Lambda 體中只有一條語句, return 和 大括號(hào)都可以省略不寫
           *   Comparator<Integer> com = (x, y) -> Integer.compare(x, y);
           *
           * 語法格式六:Lambda 表達(dá)式的參數(shù)列表的數(shù)據(jù)類型可以省略不寫,因?yàn)镴VM編譯器通過上下文推斷出,數(shù)據(jù)類型,即“類型推斷”
           *   (Integer x, Integer y) -> Integer.compare(x, y);
           *
           * 上聯(lián):左右遇一括號(hào)省
           * 下聯(lián):左側(cè)推斷類型省
           * 橫批:能省則省
           *
           * 二、Lambda 表達(dá)式需要“函數(shù)式接口”的支持
           * 函數(shù)式接口:接口中只有一個(gè)抽象方法的接口,稱為函數(shù)式接口。 可以使用注解 @FunctionalInterface 修飾
           *     可以檢查是否是函數(shù)式接口
           */
          public class TestLambda2 {
           
           @Test
           public void test1(){
            int num = 0;//jdk 1.7 前,必須是 final
            
            Runnable r = new Runnable() {
             @Override
             public void run() {
              System.out.println("Hello World!" + num);
             }
            };
            
            r.run();
            
            System.out.println("-------------------------------");
            
            Runnable r1 = () -> System.out.println("Hello Lambda!");
            r1.run();
           }
           
           @Test
           public void test2(){
            Consumer<String> con = x -> System.out.println(x);
            con.accept("我大尚硅谷威武!");
           }
           
           @Test
           public void test3(){
            Comparator<Integer> com = (x, y) -> {
             System.out.println("函數(shù)式接口");
             return Integer.compare(x, y);
            };
           }
           
           @Test
           public void test4(){
            Comparator<Integer> com = (x, y) -> Integer.compare(x, y);
           }
           
           @Test
           public void test5(){
          //  String[] strs;
          //  strs = {"aaa", "bbb", "ccc"};
            
            List<String> list = new ArrayList<>();
            
            show(new HashMap<>());
           }

           public void show(Map<String, Integer> map){
            
           }
           
           //需求:對一個(gè)數(shù)進(jìn)行運(yùn)算
           @Test
           public void test6(){
            Integer num = operation(100, (x) -> x * x);
            System.out.println(num);
            
            System.out.println(operation(200, (y) -> y + 200));
           }
           
           public Integer operation(Integer num, MyFun mf){
            return mf.getValue(num);
           }
          }


          posted on 2018-03-06 08:32 長春語林科技 閱讀(141) 評(píng)論(0)  編輯  收藏 所屬分類: java8
          <2018年3月>
          25262728123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

           

          長春語林科技?xì)g迎您!

          常用鏈接

          留言簿(6)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          相冊

          收藏夾

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 永州市| 临城县| 体育| 乌鲁木齐市| 蓬溪县| 通山县| 永平县| 江山市| 咸阳市| 文成县| 大理市| 米林县| 彭水| 专栏| 尉犁县| 连南| 疏附县| 班戈县| 始兴县| 大姚县| 隆回县| 鄂温| 邯郸县| 达日县| 墨玉县| 封丘县| 南漳县| 安达市| 巨鹿县| 南充市| 长治市| 永福县| 伊宁市| 全椒县| 三台县| 尼木县| 萨嘎县| 元江| 淮安市| 天台县| 平度市|