1.Arrays
它是一个工具类,主要掌握的其中一个方法是srot(数组,排序规则)。
o1-o2是升序排列,o2-o1是降序排列。
package test02;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Random;
import java.util.Scanner;
import javax.xml.crypto.Data;
public class test {public static void main(String [] arg) {Integer[] arr= {2,6,4,8,9,5,3,1,7};//利用Arrays工具类进行排序:(数组,排序规则)Arrays.sort(arr, new Comparator<Integer>() { //匿名内部类@Overridepublic int compare(Integer o1,Integer o2) {return o1-o2;}});System.out.println(Arrays.toString(arr));}
}
2.匿名内部类
若要用匿名内部类去调用方法
调用一个方法的时候,如果这个方法的形参是一个接口,那么我们就要传递这个接口的实现类对象;如果实现类对象只要用到一次,就可以用匿名内部类的形式进行书写。
public class test {public static void main(String [] arg) {//用匿名内部类改写method(new Swim() {@Overridepublic void swimming(){System.out.println("游泳");}});}//原方法public static void method(Swim s) {s.swimming();}}
interface Swim {public abstract void swimming();
}
3.Lambda表达式
1)Lambda表达式可以用来简化匿名内部类的书写。
2)Lanmda表达式只能简化函数式接口的匿名内部类的书写。
函数式接口:有且仅有一个抽象方法的接口叫函数式接口,接口上方可加@FunctionalInterface注解。
//Lambda表达式Arrays.sort(arr, (Integer o1,Integer o2)-> {return o1-o2;});System.out.println(Arrays.toString(arr));}
}
Lambda表达式省略写法:
1)参数类型可以省略不写;
2)如果只有一个参数,参数类型可以忽略,同时()也可以忽略。
3)如果Lanbda表达式的方法体只有一行,大括号,分号,return可以忽略不写,需要同时忽略。
//Lambda表达式省略写法Arrays.sort(arr, ( o1, o2)-> o1-o2 );System.out.println(Arrays.toString(arr));