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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Lambda 表达式的应用

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

lambda表達式

  • 函數式接口:只有一個方法的接口,比如Runnable和Comparator

先看幾個 lambda 表達式的例子進行理解

(int x,int y) -> x + y //接收x和y兩個整形參數,并返回他們的和 () -> 66 //不接收任何參數直接返回66 (String name) -> {System.out.println(name);} //接收一個字符串然后打印出來 (View view) -> {view.setText("123");} //接受一個view對象并調用setText方法 復制代碼
  • lambda 表達式本質上是一個 由編譯器推斷并幫你轉換包裝為常規的代碼,因此你可以使用更少的代碼來實現同樣的功能
  • 是java se 8 中的一個重要新特性。lambda表達式允許你通過表達式來代替接口功能
  • 基本語法:

(parameters) -> expression 或

(parameters) ->{ statements; }

使用lambda 表達式遍歷集合

String[] stars = {"james", "kobe", "paul", "Anthony","rose", "love","jr", "Jordan "}; List<String> starList = Arrays.asList(stars); starList.forEach((star) -> System.out.println(star)); //或者 starList.forEach(System.out::println); 復制代碼

在使用匿名內部類的時候

  • 比如創建線程,不適用lambda表達式
new Thread(new Runnable() {@Overridepublic void run() {System.out.println(1);} }).start(); 復制代碼
  • 使用lambda 表達式
new Thread(()-> System.out.println(1)).start(); 復制代碼

集合排序

  • 不使用lambda 表達式
String[] stars = {"james", "kobe", "paul", "Anthony","rose", "love","jr", "Jordan "};Arrays.sort(stars, new Comparator<String>() {@Overridepublic int compare(String o1, String o2) {return o1.compareTo(o2);}}); 復制代碼
  • 使用lambda 表達式
Arrays.sort(stars,(String s1,String s2) -> (s1.compareTo(s2))); 復制代碼

stream和lamda的結合使用

  • 什么是stream
  • 若想要將一個集合中的某個屬性提取出來,比如下面這樣
List<Player>list = new ArrayList<>();list.add(new Player("kobe","lakers",31,30000));list.add(new Player("james","lakers",34,33000));list.add(new Player("paul","rocket",34,20000));list.add(new Player("hardon","rocket",31,20000));List<String> names = new ArrayList<>();for (Player player : list) {names.add(player.getName());}for (String name : names) {System.out.println(name);}復制代碼
  • 若使用lambda 表達式
List<String> names = list.stream().map(Player::getName).collect(Collectors.toList()); names.forEach(System.out::println); 復制代碼
  • 當然我們還可以進行更復雜一點的操作,給每個球員的分數加1000
list.forEach( s -> s.setScore(s.getScore() + 1000)); list.stream().map(Player::getScore).collect(Collectors.toList()).forEach(System.out::println);復制代碼
  • 也可以過濾出分數大于30000 年齡小于32 的球員
list.stream().filter((p) -> (p.getScore() > 30000)).filter((p) -> (p.getAge() < 32)).collect(Collectors.toList()).forEach(System.out::println); 復制代碼
  • 根據球員的分數來排序
list.stream().sorted((p1,p2) -> (p1.getScore()-p2.getScore())).collect(Collectors.toList()).forEach(System.out::println); 復制代碼

總結

以上是生活随笔為你收集整理的Lambda 表达式的应用的全部內容,希望文章能夠幫你解決所遇到的問題。

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