学Java第四十二天--------Arrays工具类和Lambda表达式
一、Arrays工具类
前四个会有返回值,不会改变原数组,后面三个是操作,会改变数组。

1、tostring(arr)

2、binarySearch(arr,e)

3、copyof(arr,个数)

4、fill(arr,new e)

5、sort()只有一个参数,默认升序

6、sort()有两个参数的,能确定排序规则的
原理解释:


如何查看一个方法的参数是什么类型的?-------两个参数都填充,对 sort 进行 CTRL+B查看源码,发现sort的第二个参数是接口类型:::



写第二个参数的时候,直接写new compare,下拉框会直接显示,选中就可以了
代码:
package com.Arraysutils;import java.util.Arrays;
import java.util.Comparator;public class sort_test {public static void main(String[] args) {Integer[]arr={1,8,7,2,54,96,20};Arrays.sort(arr, new Comparator<Integer>() {@Overridepublic int compare(Integer o1, Integer o2) {return o1-o2;//正序 o2-o1是降序}});System.out.println(Arrays.toString(arr));}
}
package com.Arraysutils;import java.awt.print.Printable;
import java.util.Arrays;
import java.util.Comparator;public class sort_test {public static void main(String[] args) {Integer[]arr={1,8,7,2,54,96,20};Arrays.sort(arr, new Comparator<Integer>() {@Overridepublic int compare(Integer o1, Integer o2) {return o1-o2;//正序 o2-o1是降序}});System.out.println(Arrays.toString(arr));System.out.println("----------------------");System.out.println(Arrays.toString(arr));System.out.println(Arrays.binarySearch(arr,3));System.out.println(Arrays.toString(Arrays.copyOf(arr,5)));Arrays.fill(arr,200);System.out.println(Arrays.toString(arr));}
}
二、Lambda表达式
例子:

Lambda表达式是函数式思想的体现:

Lambda的固定格式:

用法:

代码:
原本的匿名内部类:
package com;public class Lambda_test {public static void main(String[] args) {method(new Swim() {@Overridepublic void swimming() {System.out.println("我在游泳");}});}public static void method(Swim s){s.swimming();}public interface Swim{public abstract void swimming();}
}
用Lambda表达式简化后:
package com;public class Lambda_test {public static void main(String[] args) {method(()-> {System.out.println("我在游泳");});}public static void method(Swim s){s.swimming();}@FunctionalInterfacepublic interface Swim{public abstract void swimming();}
}
1)必须得是匿名内部类,
2)而且得是实现接口的,不能是继承类的,
3)实现的接口里面只能有一个函数。如何判断?在接口上面放@FunctionalInterface,不报错,就可以变成Lambda表达式。
总结:
还可以更加省略:

代码:
package com.sort;import java.util.Arrays;
import java.util.Comparator;public class Lambda_test2 {public static void main(String[] args) {Integer []arr={4,5,8,3,2,7,1};Arrays.sort(arr, ( o1, o2)->o1-o2);System.out.println(Arrays.toString(arr));}
}
小练习:

代码:
package com.Lambda;import java.util.Arrays;
import java.util.Comparator;public class Lambda_test3 {public static void main(String[] args) {String []arr={"aaa","a","aa","aaaa"};Arrays.sort(arr, (o1, o2)->o1.length()-o2.length());System.out.println(Arrays.toString(arr));}
}
