1. java8新特性lambda表達式有什麼用
一:因為lambda表達式能夠使代碼看起來更簡潔,清爽
匿名內部類的寫法
List<String>names=Arrays.asList("jack","tom","jerry");
Collections.sort(names,newComparator<String>(){
@Override
publicintcompare(Strings1,Strings2){
returns2.compareTo(s1);
}
});
lambda表達式的寫法
List<String>names=Arrays.asList("jack","tom","jerry");Collections.sort(names,(s1,s2)->s2.compareTo(s1));
二: 很多編程語言都支持lambda表達式. java不支持都不好意思了......
三: 通過lambda 表達式 來實現函數是編程.將來聲明式編程語言借鑒函數編程思想,函數編程語言融合聲明式編程特性...這幾乎是一種必然趨勢。
2. 用java 8裡面的lambda表達式寫一個簡單加法運算
/*
一個介面,如果只有一個顯式聲明的抽象方法,
那麼它就是一個函數介面。
一般用@FunctionalInterface標注出來(也可以不標)
*/
public interface Inteface1{
//可以不用abstract修飾
public abstract void test(int x,int y);
//public void test1();//會報錯,不能有兩個方法,盡管沒有使用abstract修飾
public boolean equals(Object o);//equals屬於Object的方法,所以不會報錯
}
public class Test{
public static void main(String args[]){
Inteface1 f1=(int x,int y)->{System.out.println(x+y);};
f1.test(3,4);
Inteface1 f2=(int x,int y)->{ System.out.println("Hello Lambda!\t the result is " +(x+y));};
f2.test(3,4);
}
}
3. Java8新特性lambda表達式有什麼用
一:因為lambda表達式能夠使代碼看起來更簡潔,清爽
匿名內部類的寫法
List<String>names=Arrays.asList("jack","tom","jerry");
Collections.sort(names,newComparator<String>(){
@Override
publicintcompare(Strings1,Strings2){
returns2.compareTo(s1);
}
});
lambda表達式的寫法
List<String>names=Arrays.asList("jack","tom","jerry");
Collections.sort(names,(s1,s2)->s2.compareTo(s1));
二: 很多編程語言都支持lambda表達式. java不支持都不好意思了......
三: 通過lambda 表達式 來實現函數是編程.將來聲明式編程語言借鑒函數編程思想,函數編程語言融合聲明式編程特性...這幾乎是一種必然趨勢。
4. Java8 新特性中的Stream,如何按照條件替換原來stream中的數據
1、首先利用foreach()方法對Stream元素進行遍歷,如下圖所示。
5. 什麼情況下可以使用java8的lambda表達式
例1、用lambda表達式實現Runnable 我開始使用Java 8時,首先做的就是使用lambda表達式替換匿名類,而實現Runnable介面是匿名類的最好示例。看一下Java 8之前的runnable實現方法,需要4行代碼,而使用lambda表達式只需要一行代碼。我們在這里做了
6. Java 8的新特性lambda表達式是否比匿名內部類具有更好的可讀性
對於大多數剛剛接觸jdk8的同學來說,應該都會認為lambda表達式其實就是匿名內部類的語法糖(包括我自己,在剛剛接觸的時候,也是這樣認為的),但實際上二者還是存在不少差異,其中最主要的兩點就是標識性和作用域。
首先,內部類在創建表達式時,會確保創建一個擁有唯一標識的新對象,而對於lambda,其計算結果(其實就是一個映射的過程)可能有也可能沒有唯一標識,這取決於具體實現。
其次,內部類的聲明會創建出一個新的命名作用域,在這個作用域中,this與super指向內部類本身的當前實例;但是lambda恰恰相反,它不會引入任何新的命名環境,這樣就避免了內部類名稱查找的復雜性,名稱查找會導致很多問題,比如想要調用外圍實例的方法時卻錯誤的調用了內部類實例的Object方法。
7. 如圖是使用java8的lambda表達式和函數式介面實現的一個方法,請問如果使用java7實現,圖示入參怎麼定義
public class Predicte{
boolean evaluate(Mole m);
}
把判斷函數用類包裝起來
然後在對moles遍歷時調用這個方法過濾?