学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>() {
@Override
public 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>() {
@Override
public 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() {
@Override
public 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();
}
@FunctionalInterface
public 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));
}
}
原文地址:https://blog.csdn.net/weixin_67566799/article/details/154495226
免责声明:本站文章内容转载自网络资源,如侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!
