1 結構
(parameters)->expression
或
(parameters)->{statements;}
2 Usage
- 用到的包
import basic.datatype.po.Infos;
import java.util.List;
import java.util.Arrays;
import java.util.ArrayList;
import java.util.stream.Collectors;
import java.util.Collections;
import java.util.Comparator;
import java.util.Scanner;
import java.util.function.Consumer;
import java.util.Map;
- 實體
package basic.datatype.po;
public class Infos{
private String name;
private String address;
private String score;
public void setName(String name){
this.name = name;
}
public String getName(){
return name;
}
public void setAddress(String address){
this.address = address;
}
public String getAddress(){
return address;
}
public void setScore(String score){
this.score = score;
}
public String getScore(){
return score;
}
public Infos(){}
public Infos(String name, String address, String score){
this.name = name;
this.address = address;
this.score = score;
}
}
2.1 遍歷列表
public class LambdaExpressionTest implements InterfaceTest{
public String baseLambda(List datasLis){
datasLis.forEach(s -> System.out.println(s));
return "lambda test";
}
public static void main(String[] args){
LambdaExpressionTest lTest = new LambdaExpressionTest();
List datasLis = Arrays.asList("xiaoxiao", "xiaohei", "xiaohua");
lTest.baseLambda(datasLis);
}
}
其中,s爲datasLis的每個元素,通過forEach遍歷.
2.2 更新數據
package basic.datatype.dataformat;
import basic.datatype.po.Infos;
import java.util.List;
import java.util.Arrays;
import java.util.ArrayList;
import java.util.stream.Collectors;
import java.util.Collections;
import java.util.Comparator;
import java.util.Scanner;
import java.util.function.Consumer;
import java.util.Map;
public class LambdaExpressionTest implements InterfaceTest{
public List<Infos> infosUpdateByLambda(List<Infos> infosLis){
Consumer<Infos> updateName = e -> e.setName(e.getName()+"-update");
infosLis.forEach(updateName);
return infosLis;
}
public static void main(String[] args){
LambdaExpressionTest lTest = new LambdaExpressionTest();
List<Infos> infosLis = new ArrayList<>();
infosLis.add(new Infos("xiaohua", "shenzhen", "080"));
infosLis.add(new Infos("xiaoxiao", "shenzhen", "100"));
infosLis.add(new Infos("xiaohei", "shenzhen", "090"));
System.out.println("update name:"+lTest.infosUpdateByLambda(infosLis).stream().map(Infos::getName).collect(Collectors.toList()));
}
}
通過Consumer定義數據接收Lambda修改的變量,forEach進行更新遍歷.
2.3 排序
- 普通排序
package basic.datatype.dataformat;
import basic.datatype.po.Infos;
import java.util.List;
import java.util.Arrays;
import java.util.ArrayList;
import java.util.stream.Collectors;
import java.util.Collections;
import java.util.Comparator;
import java.util.Scanner;
import java.util.function.Consumer;
import java.util.Map;
public class LambdaExpressionTest implements InterfaceTest{
public List<Infos> sortLiNormal(List<Infos> datasLis){
Collections.sort(datasLis, new Comparator<Infos>(){
public int compare(Infos i1, Infos i2){
return i1.getScore().compareTo(i2.getScore());
}
});
return datasLis;
}
public static void main(String[] args){
LambdaExpressionTest lTest = new LambdaExpressionTest();
List<Infos> infosLis = new ArrayList<>();
infosLis.add(new Infos("xiaohua", "shenzhen", "080"));
infosLis.add(new Infos("xiaoxiao", "shenzhen", "100"));
infosLis.add(new Infos("xiaohei", "shenzhen", "090"));
System.out.println("sort normal:"+lTest.sortLiNormal(infosLis).stream().map(Infos::getScore).collect(Collectors.toList()));
}
}
- Lambda排序
package basic.datatype.dataformat;
import basic.datatype.po.Infos;
import java.util.List;
import java.util.Arrays;
import java.util.ArrayList;
import java.util.stream.Collectors;
import java.util.Collections;
import java.util.Comparator;
import java.util.Scanner;
import java.util.function.Consumer;
import java.util.Map;
public class LambdaExpressionTest implements InterfaceTest{
public List<Infos> sortLiNormal(List<Infos> datasLis){
Collections.sort(datasLis, new Comparator<Infos>(){
public int compare(Infos i1, Infos i2){
return i1.getScore().compareTo(i2.getScore());
}
});
return datasLis;
}
public static void main(String[] args){
LambdaExpressionTest lTest = new LambdaExpressionTest();
List<Infos> infosLis = new ArrayList<>();
infosLis.add(new Infos("xiaohua", "shenzhen", "080"));
infosLis.add(new Infos("xiaoxiao", "shenzhen", "100"));
infosLis.add(new Infos("xiaohei", "shenzhen", "090"));
System.out.println("sort by lambda:"+lTest.sortLiByLambda(infosLis).stream().map(Infos::getScore).collect(Collectors.toList()));
}
}
【參考文獻】
[1]https://www.cnblogs.com/coprince/p/8692972.html
[2]https://blog.csdn.net/qq_37176126/article/details/81273195
[3]https://www.jianshu.com/p/a01d84c57180
[4]https://blog.csdn.net/weixin_37766087/article/details/94999833