Lambda作为函数式编程中的基础部分,在其他编程语言(例如:Scala)中早就广为使用,但在JAVA领域中发展较慢,直到java8,才开始支持Lambda。
抛开数学定义不看,直接来认识Lambda。Lambda表达式本质上是匿名方法,其底层还是通过invokedynamic指令来生成匿名类来实现。它提供了更为简单的语法和写作方式,允许你通过表达式来代替函数式接口。在一些人看来,Lambda就是可以让你的代码变得更简洁,完全可以不使用——这种看法当然没问题,但重要的是lambda为Java带来了闭包。得益于Lamdba对集合的支持,通过Lambda在多核处理器条件下对集合遍历时的性能提高极大,另外我们可以以数据流的方式处理集合——这是非常有吸引力的。
1. List去重:
/*** java List Strasm去重
*@paramargs*/
public static voidmain(String[] args) {
List list = new ArrayList<>();
list.add("1");
list.add("1");
list.add("2");
list.add("3");
list.add("4");
list.add("3");
list.add("4");
System.out.println("List去重前:" +list);
list=list.stream().distinct().collect(Collectors.toList());
System.out.println("List去重后:" +list);
}
测试结果:
2. List根据对象某个字段去重:
importjava.util.ArrayList;importjava.util.List;importjava.util.stream.Collectors;/***
测试user
*@version1.0
*@authorli_hao
* @date 2018年7月18日*/
public classUser {privateString userid;privateString username;publicUser(String userid, String username) {super();this.userid =userid;this.username =username;
}publicString getUserid() {returnuserid;
}public voidsetUserid(String userid) {this.userid =userid;
}publicString getUsername() {returnusername;
}public