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>() { //匿名内部类
@Override
public 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() {
@Override
public 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));