1.爲何使用lamda表達式?java
Java8的λ表達式的基本用途:完成了回調的原意——代碼的參數化express
在java8以前,回調的代碼一般由匿名類提供編程
2.lamda表達式語法
lamda表達式包含三部分:數據結構
一、 一個括號內用逗號分隔的形式參數,參數是函數式接口裏面方法的參數框架
二、 一個箭頭符號函數
三、 方法體,能夠是表達式和代碼塊大數據
(parameters)->expression 或者 (parameters)->{statements;}spa
3.lamda表達式規則
栗子:Runnable runnable = () -> System.out.println("這個是用拉姆達實現的線程");.net
方法沒有參數,->前面的()中不須要聲明形參線程
->後邊代碼只有一行,()能夠省略
4.lamda表達式應用應用1:函數式接口應用
1. 定義一個@FunctionalInterface註解標誌的接口(函數式接口)
@FunctionalInterface
public interface A {
public abstract void call();
}
寫一個@Test
public class Demo2 {
@Test
public void test(){
lamda();
}
public void lamda(){
A a = ()-> System.out.println("lamda 實戰1");
a.call();
}
}
結果輸出:
應用2:使用lambda改進的集合框架Stream API
流(Stream)僅僅表明着數據流,並無數據結構,因此他遍歷完一次以後便再也沒法遍歷(這點在編程時候須要注意,不像Collection,遍歷多少次裏面都還有數據),它的來源能夠是Collection、array、io等等。
流做用是提供了一種操做大數據接口,讓數據操做更容易和更快。它具備過濾、映射以及減小遍歷數等方法,這些方法分兩種:中間方法和終端方法,「流」抽象天生就該是持續的,中間方法永遠返回的是Stream,所以若是咱們要獲取最終結果的話,必須使用終點操做才能收集流產生的最終結果。區分這兩個方法是看他的返回值,若是是Stream則是中間方法,不然是終點方法。
import java.util.stream.Stream; public class StreamDemo { public static void main(String[] args) { List<User> users = new ArrayList<User>(); users.add(new User(20, "張三")); users.add(new User(22, "李四")); users.add(new User(10, "王五")); Stream<User> stream = users.stream(); stream.filter(p -> p.getAge() > 20); //過濾年齡大於20的 }}--------------------- 做者:high_tea 來源:CSDN 原文:https://blog.csdn.net/qq_21319187/article/details/82429788 版權聲明:本文爲博主原創文章,轉載請附上博文連接!