Java-Lambda式
Java-Lambda式 一、オブジェクト向けプログラミング及び関数式プログラミング 二、Lambda式 三、コード実装
一、オブジェクト向けプログラミング及び関数式プログラミング
オブジェクト向けプログラミング:各タスクに対して、このタスクを解決できるオブジェクトを見つけ、その中のメソッドを呼び出して問題を解決し、オブジェクトを強調する必要があります.関数式プログラミング:各タスクに対して、タスク解決の結果を強調し、タスク解決の過程に関心を持たず、結果を強調する.
二、Lambda式
Lambda式:JDK 1.8出現の新しい特性、コードの書くことを簡略化します.Lambdaの標準フォーマット:複数のパラメータをカンマで区切る
Lambda式省略規則: 1.カッコ内のパラメータタイプは省略できます. 2.カッコの()にパラメータが1つしかない場合は、カッコを省略することもできます. 3.カッコ{}内にパラメータが1つしかない場合は、戻り値があるかどうかにかかわらずカッコ、returnキーワードである文セミコロンを省略できます(省略を省略するには、単独で省略するとエラーが発生します).
Lambda使用前提: 1.インタフェースが必要であり、インタフェースに抽象メソッドが1つしかないことが要求されます.すなわち、抽象メソッドが一意であることを保証します. 2.Lambdaを使用するにはコンテキスト推定が必要です.つまり、メソッドのパラメータまたはローカル変数タイプは、Lambdaをインタフェースのインスタンスとして使用するには、Lambdaに対応するインタフェースタイプでなければなりません.
三、コード実装
一、オブジェクト向けプログラミング及び関数式プログラミング
オブジェクト向けプログラミング:各タスクに対して、このタスクを解決できるオブジェクトを見つけ、その中のメソッドを呼び出して問題を解決し、オブジェクトを強調する必要があります.関数式プログラミング:各タスクに対して、タスク解決の結果を強調し、タスク解決の過程に関心を持たず、結果を強調する.
二、Lambda式
Lambda式:JDK 1.8出現の新しい特性、コードの書くことを簡略化します.Lambdaの標準フォーマット:複数のパラメータをカンマで区切る
Lambda式省略規則: 1.カッコ内のパラメータタイプは省略できます. 2.カッコの()にパラメータが1つしかない場合は、カッコを省略することもできます. 3.カッコ{}内にパラメータが1つしかない場合は、戻り値があるかどうかにかかわらずカッコ、returnキーワードである文セミコロンを省略できます(省略を省略するには、単独で省略するとエラーが発生します).
Lambda使用前提: 1.インタフェースが必要であり、インタフェースに抽象メソッドが1つしかないことが要求されます.すなわち、抽象メソッドが一意であることを保証します. 2.Lambdaを使用するにはコンテキスト推定が必要です.つまり、メソッドのパラメータまたはローカル変数タイプは、Lambdaをインタフェースのインスタンスとして使用するには、Lambdaに対応するインタフェースタイプでなければなりません.
三、コード実装
public class LambdaDemo01 {
public static void main(String[] args) {
// Runnable
RunnableDemo demo = new RunnableDemo();
// , demo
Thread t = new Thread(demo);
t.start();// :Thread-0
// Runnable ,
//
Runnable run = new Runnable(){
public void run() {
System.out.println(Thread.currentThread().getName()+" ");
};
};
new Thread(run).start(); :Thread-1
//
new Thread( new Runnable(){
public void run() {
System.out.println(Thread.currentThread().getName()+" ");
};
}).start();// :Thread-2
// , ,
// run , Lambda
//1.Lambda
new Thread(()->{
System.out.println(Thread.currentThread().getName()+" ");
}).start();// :Thread-3
// , ,
new Thread(()->System.out.println(Thread.currentThread().getName()+" ")).start();
//2.Lambda , ,
Person[] pArray = {
new Person(" ",18),
new Person(" ",20),
new Person(" ",21)};
// Arrays.sort(pArray,new Comparator(){
//
// @Override
// public int compare(Person arg0, Person arg1) {
// // TODO Auto-generated method stub
// return arg0.getAge()-arg1.getAge();
// }
//
// });
// Lambda
Arrays.sort(pArray,(Person p1,Person p2)->{
return p1.getAge()-p2.getAge();
});
// , , ,return
Arrays.sort(pArray,(p1,p2)-> p1.getAge()-p2.getAge());
//
for(Person p:pArray){
System.out.println(p);/*
Person [name= , age=18]
Person [name= , age=20]
Person [name= , age=21]
*/
}
//3.Lambda , ,
//
// addDemo add = new addDemo(){
//
// @Override
// public int add(int a, int b) {
// // TODO Auto-generated method stub
// return a+b;
// }
// };
// System.out.println(add.add(3, 4));// :7
// Lambda
int result=result(3,5,(int a,int b)->{
return a+b;
});
System.out.println(result);// :8
}
public static int result(int a,int b,addDemo add){
int result=add.add(a, b);
return result;
}
}
// Runnable , run ,
class RunnableDemo implements Runnable{
@Override
public void run() {
// TODO Auto-generated method stub
System.out.println(Thread.currentThread().getName()+" ");
}
}
class Person{
private String name;
private int age;
public Person() {
super();
}
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + "]";
}
}
// ,
interface addDemo{
public abstract int add(int a,int b);
}