合肥建网站,上海论坛网站建设,成都建设网站企业电话,盐城市网站建设Lambda表达式的学习 什么是Lambda表达式假设有如下场景#xff0c;对整数进行排序。Lambda表达式常常用于list的排序#xff0c;过滤#xff0c;转换#xff0c;打印#xff0c;分组 什么是Lambda表达式
Lambada表达式是JDK1.8时候增加的特性#xff0c;Lambada实际上是… Lambda表达式的学习 什么是Lambda表达式假设有如下场景对整数进行排序。Lambda表达式常常用于list的排序过滤转换打印分组 什么是Lambda表达式
Lambada表达式是JDK1.8时候增加的特性Lambada实际上是一种匿名方法。
假设有如下场景对整数进行排序。
JDK1.8之前的Java代码
ListInteger numbers Arrays.asList(5, 3, 8, 2, 9);Collections.sort(numbers, new ComparatorInteger() {public int compare(Integer a, Integer b) {return a.compareTo(b);}
});
这段代码使用的是匿名类的方式简单说下匿名类的概念匿名类看名知其意没有名字的类哪里需要就在哪里创建并且实例化常常用于创建实现某个接口的抽象方法接口中的方法默认都是抽象方法不用abstract修饰或继承某个抽象类重写这个抽象类中的抽象方法。上面的代码中
new ComparatorInteger() {public int compare(Integer a, Integer b) {return a.compareTo(b);}就是对Comparator接口中compare方法的实现所以是匿名类
JDK1.8之后的Java代码使用Lambada表达式来排序
ListInteger numbers Arrays.asList(5, 3, 8, 2, 9);Collections.sort(numbers, (num1, num2) - Integer.compare(Integer.parseInt(num1), Integer.parseInt(num2)));Lambda表达式常常用于list的排序过滤转换打印分组
ListString list Arrays.asList(3,123,467,300,89,9);
//排序
Collections.sort(list,(s1,s2)- Integer.compare(Integer.parseInt(s1),Integer.parseInt(s2)));
//过滤
ListString list2 list.stream().filter(s - s.equals(3)).collect(Collectors.toList());
//转换
ListInteger list3 list.stream().map(s - s.length()).collect(Collectors.toList());
//打印
list3.forEach(s- System.out.println(s));
//分组
MapInteger,ListString groups list.stream().collect(Collectors.groupingBy(s - s.length()));