(以下内容全部来自上述课程)
1.Arrays
操作数组的工具类。
细节:
- copyOf:新长度<老长度----部分拷贝,新长度=老长度----完全拷贝,新长度>老长度----会补上默认初始值
- copyOfRange:包头不包尾,包左不包右
- sort1:给基本数据类型进升序排列
底层原理:快速排序 - sort2:给引用数组类型进行排序,基本需变包装类
底层原理:插入排序+二分查找
2.Lambda表达式
简化代码
1.函数式编程
一种思想特点。
忽略面向对象的复杂语法,强调做什么,而不是谁去做。
Lambda表达式就是函数思想的体现。
2.标准格式
Lambda表达式是JDK8开始后的一种新语法形式。
()->{}
- ()对应着方法的形参
- ->固定格式
- {}对应着方法的方法体
注意点:
- Lambda表达式可以用来简化匿名内部类的书写。
- Lambda表达式只能简化函数式接口的匿名内部类的写法。
- 函数式接口:
有且仅有一个抽象方法的接口叫做函数式接口,接口上方可以加@FunctionalInterface注解。
package Lambda;public class LambdaDemo1 {public static void main(String[] args) {//1.利用匿名内部类的形式去调用下面的方法//调用一个方法的时候,如果方法的形参是一个接口,那么我们传递这个接口的实现类对象//如果实现类对象只要用到一次,就可以使用匿名内部类的形式书写method(new Swim(){@Overridepublic void swimming() {System.out.println("我在游泳");}});//2.利用Lambda表达式的形式去调用下面的方法//Lambda表达式的格式://(参数列表) -> {方法体}//如果方法的形参列表只有一个参数,那么小括号可以省略//如果方法的方法体只有一行代码,那么大括号可以省略//如果方法的方法体只有一行代码,并且这行代码是一个输出语句,那么大括号和输出语句都可以省略method(()->{System.out.println("我在游泳");});}public static void method(Swim s){s.swimming();}
}
interface Swim{
public abstract void swimming();}
3.省略写法
核心:可推导可省略。
省略规则:
- 参数类型可以不写
- 如果只有一个参数,参数类型可以省略,同时()也可以省略
- 如果lambda表达式的方法体只有一行,大括号,分号,return可以省略不写,需要同时省略。
package Lambda;import java.util.Arrays;
import java.util.Comparator;public class LambdaDemo2 {public static void main(String[] args) {Integer[] arr = {2,3,1,5,6,7,4,8,9};// 匿名内部类的形式Arrays.sort(arr,new Comparator<Integer>(){@Overridepublic int compare(Integer o1, Integer o2) {return o1 - o2;}});// Lambda完整格式// (参数列表) -> {方法体}Arrays.sort(arr,(Integer o1,Integer o2)->{return o1 - o2;});// Lambda简化格式// 如果方法的形参列表只有一个参数,那么小括号可以省略// 如果方法的方法体只有一行代码,那么大括号可以省略// 如果方法的方法体只有一行代码,并且这行代码是一个输出语句,那么大括号和输出语句都可以省略Arrays.sort(arr,(o1,o2)->o1 - o2);System.out.println(Arrays.toString(arr));}
}