目录
Arrays类
1. 转化为字符串输出
一维数组输出:Arrays.toString(data)
//当数组是一维的时候:Arrays.toString(data)
int[] data=new int[]{2,3,4,5};
System.out.println("data="+Arrays.toString(data));
//data=[2, 3, 4, 5]
多维数组输出:Arrays.deepToString(data)
//当数组是一维的时候:Arrays.toString(data)
int[]] data=new int[][]{{2,3,4,5},{2,3,4},{4,3,1}};
System.out.println("data="+Arrays.deepToString(data));
//data=[[2, 3, 4, 5], [2, 3, 4], [4, 3, 1]]
2. 排序
2.1 一维数组排序(默认为升序):Arrays.sort(data)
int[] data=new int[]{2,5,4,1};
Arrays.sort(data);
System.out.println("data="+Arrays.toString(data));
//data=[1, 2, 4, 5]
2.2 一维数组排序(自定义排序):Arrays.sort(data)
- 如果需要自定义数组中元素的顺序,需要对sort的比较器Comparator类中的compare方法进行重写,其中Comparator是一个匿名内部类。
//需要对比较器Comparator类中的compare方法进行重写
Integer[] data=new Integer[]{2,5,4,1};
Arrays.sort(data,new Comparator<Integer>(){
@Override
public int compare(Integer a,Integer b){
return b-a;
}
});
System.out.println("data="+Arrays.toString(data));
//可以使用lambda表达式对匿名内部类进行简写
Integer[] data=new Integer[]{2,5,4,1};
Arrays.sort(data,(a,b)-> b-a);
System.out.println("data="+Arrays.toString(data));
2.3 多维数组排序(自定义排序):Arrays.sort(data)
//首先根据数组第一个元素进行升序排列,
//如果相等,则根据第二个元素逆序排列
int[][] data=new int[][]{{3,1,2},{3,2,3},{1,2,3}};
Arrays.sort(data,(a,b)->{
if(a[0]==b[0]) return a[1]-b[1];
return b[0]-a[0];
});
System.out.println("data="+Arrays.deepToString(data));
//data=[[3, 1, 2], [3, 2, 3], [1, 2, 3]]
3. 匿名内部类(内部类)
3.1 什么是内部类:
1)定义在类中的类
3.2 内部类的作用:
1)可以访问该类定义所作用域的数据,包括private修饰的私有数据。
2)可以解决Java单继承的缺陷。
3.1 什么是匿名内部类:
1)本质上式一个没有名字的局部内部类,定义在方法中,代码块中。
2)作用:方便创建子类对象,最终目的是为了简化代码编写
3)格式如下:
Animal a=new Animal(){
public void run(){
};
4. Lambda表达式
- 简化函数是接口的匿名内部类写法,主要目的是用于简化代码。
- 在对Arrays.sort进行自定义排序就用到了Lambda表达式。