Java Lambda表达式详解(优缺点以及简单用法)
程序员文章站
2022-04-15 17:52:07
lambda优缺点:优点:简洁。非常容易并行计算。可能代表未来的编程趋势。缺点:若不用并行计算,很多时候计算速度没有比传统的 for 循环快。(并行计算有时需要预热才显示出效率优势)不容易调试。若其他程序员没有学过 lambda 表达式,代码不容易让其他语言的程序员看懂。总结:lambda表达式中forEach方法与我们的普通的for循环输出效果相差无几最主要的是我们可以用这个表达式来装逼符号表示:lambda是一个匿名函数()里的表示参数{}里的表示方法体->...
lambda优缺点:
优点:
- 简洁。
- 非常容易并行计算。
- 可能代表未来的编程趋势。
缺点:
- 若不用并行计算,很多时候计算速度没有比传统的 for 循环快。(并行计算有时需要预热才显示出效率优势)
- 不容易调试。
-
若其他程序员没有学过 lambda 表达式,代码不容易让其他语言的程序员看懂。
总结:
lambda表达式中forEach方法与我们的普通的for循环输出效果相差无几
最主要的是我们可以用这个表达式来装逼
符号表示:
lambda是一个匿名函数
()里的表示参数
{}里的表示方法体
-> 表示lambda运算符
集中简单的运用方法:
执行方法1
这是用的lambda方法中的sort方法
在sort方法中 o1表示最后边的值、o2表示倒数第二个值 处理元素是从后边开始的
public class Exersice1 { //集合排序 /**ArrayList<>*/ public static void main(String[] args) { /**
* 需求:
* 已知在ArryList中有若干个Person类对象,将这些Person对象按照年龄来降序排序
*/ List<Person> list = new ArrayList<>(); list.add(new Person("小蓝",10)); list.add(new Person("小红",11)); list.add(new Person("小紫",18)); list.add(new Person("小橙",20)); //排序 //在sort方法中,o1是最后面的元素,o2是倒数第二个元素,以此类推,流是处理元素是从后面开始取值。 list.sort((o1,o2) -> o2.age - o1.age); System.out.println(list); } }
运行效果:
降序排序
执行方法2
这是用的lambda方法中的TreeSet排序方法
public class Exersice2 { public static void main(String[] args) { //TreeSet排序 //使用Lambda表达式来实现Comparator接口,并实例化一个TreeSet对象 TreeSet<Person> set = new TreeSet<>((o1,o2) -> { if(o1.age >= o2.age){ return -1; }else { return 1; } }); set.add(new Person("小蓝",10)); set.add(new Person("小红",11)); set.add(new Person("小紫",18)); set.add(new Person("小橙",20)); System.out.println(set); } }
运行效果:
执行方法3
这是用的lambda方法中的集合的遍历输出,forEach方法,这与普通的for循环相差无几
public class Exersice3 { public static void main(String[] args) { //集合的遍历 ArrayList<Integer> list = new ArrayList<>(); //添加元素 Collections.addAll(list,1,2,3,4,5,6,7,8,9); for (Integer integer : list) { System.out.println(integer); } //将集合中的每一个元素带入到方法accept中 list.forEach(System.out::println); //还可以用forEach方法输出集合中的偶数 list.forEach(elm -> { if(elm %2 == 0){ System.out.println(elm); } }); } }
执行效果:
执行方法4
这是用的lambda方法中的removeIf删除方法
public class Exersice4 { public static void main(String[] args) { List<Person> list = new ArrayList<>(); list.add(new Person("小蓝",10)); list.add(new Person("小红",11)); list.add(new Person("小紫",10)); list.add(new Person("小橙",20)); //之前删除年龄大于10岁的元素 使用迭代器删除 ListIterator<Person> it = list.listIterator(); while (it.hasNext()){ Person person = it.next(); if (person.age > 10){ it.remove(); } } //使用lambda实现 //将集合中的每一个元素都带入到test方法中,如果返回值是true将删除 list.removeIf(t -> { if (t.age > 10){ return true; }else { return false; } }); //简化 list.removeIf(t -> t.age>10); System.out.println(list); } }
执行效果:
执行方法5
这是用的lambda方法中的开辟线程就行输出
public class Exersice5 { public static void main(String[] args) { //使用lambda表达式开辟一个线程,做一个数字的输出 Thread t = new Thread(() -> { for (int i =0; i<10; i++){ System.out.println(i); } }); t.start(); } }
执行效果:
本文地址:https://blog.csdn.net/Solitude_w/article/details/108235236
上一篇: Java容器介绍HashSet
下一篇: Java web登录验证码生成方法和验证