1. 程式人生 > 實用技巧 >Java8中Lambda和Stream流

Java8中Lambda和Stream流

Lambad表示式

含義

Lambda和匿名內部類的功能是一樣的,不過Lambad會比匿名內部類更加特殊,它一般是作用於只有一個抽象方法的介面,這種介面是函式式介面(介面需要新增@FunctionalInterface)。

抽象方法
Consumere<T>消費型 有引數無返回值
Supplier<T>供給型 無引數有返回值
Function<T>函式型 有引數有返回值
Predicate<T>判斷型 有引數有返回值,但返回值為boolean

使用

@Test
public void test (){
// 一個實現Runnable的子類
new Thread(()->{
System.out.println("hello" + Thread.currentThread().getName());
},"執行緒1").start();
}

解析

lambad可分為倆部分,分別是引數列表和函式體

// 引數列表
()


//函式體
{
System.out.println("hello" + Thread.currentThread().getName());
}

提示

引數列表的型別可以不寫,因為它會型別推斷

PriorityQueue<Integer> pq = new PriorityQueue<>((o1,o2) -> {
return o1 - o2;
});

如果引數列表只有一個引數可以不寫()

如果沒有引數不可以省略()

如果函式體只有一行且是返回的語句,那麼可以省略{}

Stream流

之後補充