Array类是数组类,其自带的一些方法可以对数组进行操作,能够一定程度上简化开发。
import java.util.Arrays;
public class ArraysDemo {
public static void main(String[] args) {
Integer[] integers = {1,2,3};
int a[] = {1,2,34,7};
System.out.println(Arrays.toString(integers));
Arrays.sort(a);
System.out.println(Arrays.toString(a));
}
}
上述代码块演示了通过调用Arrays类的tostring方法对数组进行输出以及sort方法,具体的输出原理,可以自行查阅底层源码。
通过sort方法的调用,可以将数组中的元素进行升序排列,那么我们怎样将数组中的元素进行自定义排序呢?因为sort方法是重载的,可以通过传入一个接口comparator,实现定制排序。
调用定制的排序方法如下:
Arrays.sort(integers, new Comparator() {
@Override
public int compare(Object o1, Object o2) {
return 0;
}
});
需要传入两个参数,一个是需要排序的数组,一个是实现了Comparator接口的匿名内部类。这个匿名内部类中实现了compare方法。
自定义排序方法(冒泡为内核):
public class ArraysSortCustom {
public static void main(String[] args) {
int[] arr = {1,-1,8,0,20};
bubble02(arr, new Comparator() {
@Override
public int compare(Object o1, Object o2) {
int i1 = (Integer)o1;
int i2 = (Integer)o2;
return i1 - i2;
}
});
System.out.println(Arrays.toString(arr));
}
public static void bubble02(int[] arr, Comparator c) {
int temp = 0;
for (int i = 0; i < arr.length - 1; i++) {
for (int j = 0; j < arr.length - 1 - i; j++) {
if(c.compare(arr[j],arr[j+1])<0) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
}
这种接口编程的思想,用到了匿名内部类,这种写法还是比较灵活的,需要多多体会。(sort方法的底层源码也是采用这种写法)。