标签:概述 col test 指定 结果 ret main 基础 业务
我们查看下面的代码
package demo03; public class Demo01 { public static void main(String[] args) { //匿名内部类的方式创建多线程实现类 new Thread(new Runnable() { @Override public void run() { System.out.println("当前线程的名称:" + Thread.currentThread().getName()); } }).start();//启动线程 } }
对于 Runnable 的匿名内部类用法,可以分析出几点内容:
同样是实现多线程,下面我们体验Lambda表达式的写法
package demo03; public class Demo01 { public static void main(String[] args) { //匿名内部类的方式创建多线程实现类 new Thread(new Runnable() { @Override public void run() { System.out.println("使用匿名内部类实现,当前线程的名称:" + Thread.currentThread().getName()); } }).start();//启动线程 //使用Lambda表达式创建多线程 new Thread(() -> { System.out.println("使用Lambda实现多线程,当前线程的名称:" + Thread.currentThread().getName()); }).start(); } }
总结:
匿名内部类的好处和弊端
() ‐> System.out.println("多线程任务执行!")
接口代码
package demo04; public interface Cook { public abstract void makeFood(); }
package demo04; public class CookTest { public static void main(String[] args) { //接口作为参数,传递的是实现类对象 invokeFood(new Cook() { @Override public void makeFood() { System.out.println("匿名内部类实现吃饭了"); } }); invokeFood(() -> { System.out.println("Lambda表达式实现吃饭了"); }); } public static void invokeFood(Cook cook) { //调用实现类对象里的方法 cook.makeFood(); } }
执行后结果
定义Person类
package demo05; public class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public Person() { } @Override public String toString() { return "Person{" + "name=‘" + name + ‘\‘‘ + ", 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; } }
解答
package demo05; import java.util.Arrays; /* Lambda表达式有参数有返回值的练习 需求: 使用数组存储多个Person对象 对数组中的Person对象使用Arrays的sort方法通过年龄进行升序排序 */ public class Demo01Arrays { public static void main(String[] args) { //使用数组存储多个Person对象 Person[] arr = { new Person("柳岩", 38), new Person("迪丽热巴", 18), new Person("古力娜扎", 19) }; //对数组中的Person对象使用Arrays的sort方法通过年龄进行升序(前边-后边)排序 /*Arrays.sort(arr, new Comparator<Person>() { @Override public int compare(Person o1, Person o2) { return o1.getAge()-o2.getAge(); } });*/ //使用Lambda表达式,简化匿名内部类 Arrays.sort(arr, (Person o1, Person o2) -> { return o1.getAge() - o2.getAge(); }); //优化省略Lambda Arrays.sort(arr, (o1, o2) -> o1.getAge() - o2.getAge()); //遍历数组 for (Person p : arr) { System.out.println(p); } } }
代码执行的结果
标签:概述 col test 指定 结果 ret main 基础 业务
原文地址:https://www.cnblogs.com/wurengen/p/12055464.html