购物网站建设多少钱,c 可以做网站,rttheme 18 wordpress,淘宝官网电脑版登录界面6.3 lambda表达式
指定时间间隔完成工作#xff0c;该工作放在了ActionListener中的action performed
方法中#xff1b;work类继承上述类#xff0c;构造work类实例
定制比较器完成排序#xff0c;定义一个长度比较类#xff0c;再传给sort#xff1b;实现基于长度排…6.3 lambda表达式
指定时间间隔完成工作该工作放在了ActionListener中的action performed
方法中work类继承上述类构造work类实例
定制比较器完成排序定义一个长度比较类再传给sort实现基于长度排序而非默认的字典或字符串排序。
Class LengthComparator implements ComparatorString{};
Array.sort(strings, new LengthComparator); 共性worker类、LengthComparator类传给timersort方法。传递的是对象不是代码段。通过lambda处理代码块。 lambda表达式是一个代码块及必须传入代码的变量规范。希腊字母入
第一个lambda表达式
(String.first,String.second)-first.length()-second.length();
没有参数也要提供括号();
-后面的代码块过多用 如果可以推导出类型可以不用写类型ComparatorString comp (first, second) - first.length()-second.length(),编译器可以自动推导出参数为字符串lambda表达式赋给一个字符串比较器; 方法只有一个参数可推导出参数可不用写小括号();
ActionListener listener event - System.out.println(“the time is” new Date()); 无需指定lambda表达式返回类型上下文推导得出。(String.first,String.second)-first.length()-second.length(); 只返回一些分支另外一些分支不返回lambda中不合法。 函数式接口必须只有一个抽象方法。 Arrays.sort方法第二个参数需要一个Comparator实例只有一个方法的接口可提供一个lambda表达式。 lambda转换为接口Timer t new timer(1000, event - System.out.println(“the time is” new Date())). java.util.function包中的BiFunctionT, U, R描述类参数类型TU和返回类型R的函数。 ava.util.function中有一个有用的接口predicate中有一个testT t方法判断是否相等返回布尔值。 ArrayList类的removIf方法参数为Predicate该接口专门传递lambda表达式。将数组列表中的所有null删除list.removeIf(e - enull); 方法引用表达式System.out::println是一个方法引用等价于x-System.out.println(x);
::操作符分割方法名与对象或类名 supper:: greet();调用父类的greet方法。 构造器引用Person::new 是person构造器的一个引用通过上下文确定是哪一个构造器。
数组类型建立构造器引用int[]::new,等价于x-new int[x]; lambda表达式只能引用值不会改变的变量。不能在lambda表达式中对捕获的外部变量进行运算。循环体中的变量表达式代码块也不能引用。
不能有两个同名的局部变量。
lambda表达式中的this指创建表达式方法的this参数对象类。 使用lambda表达式的重点是延迟执行。延迟执行的原因是1.在一个单独的线程中运行代码2.多次运行代码3.算法的适当位置运行代码4.发生某种情况时运行代码5.必要时运行代码。 重复一个动作n次的repeat方法接受这个方法中的lambda表达式选择一个函数式接口可用runnable接口。
常用函数式接口基本类型的函数式接口。
FuctionalInterface 注解用于指示一个接口只能定义一个抽象方法 按名字对Person对象排序
Array.sort(people, Comparator.comparing(Person::getName));
如姓相同就比较名。
Array.sort(people, Comparator.comparing(Person::getLastName).thenComparing(Person::getFirstName);