文章目录
- Arrays
- Arrays.toString()
- Arrays.binarySearch()
- Arrays.copyOf()
- Arrays.copyOfRange()
- Arrays.fill()
- Arrays.sort()
- 升序排序
- 降序排序
Arrays
操作数组的工具类。
Arrays.toString()
import java.util.Arrays;
public class test40 {
public static void main(String[] args) {
int[] ints = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
String str = Arrays.toString(ints);
System.out.println(str); //[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
}
}
Arrays.binarySearch()
import java.util.Arrays;
public class test40 {
public static void main(String[] args) {
int[] ints = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int index = Arrays.binarySearch(ints, 10);
System.out.println(index);
}
}
Arrays.copyOf()
如果新数组的长度小于原始数组的长度——部分拷贝
如果新数组的长度等于原始数组的长度——完全拷贝
如果新数组的长度大于原始数组的长度——完全拷贝+补上默认初始化值0
import java.util.Arrays;
public class test40 {
public static void main(String[] args) {
int[] ints = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int[] ints1 = Arrays.copyOf(ints, 5);
System.out.println(Arrays.toString(ints1)); //[1, 2, 3, 4, 5]
}
}
Arrays.copyOfRange()
范围:包头不包尾
import java.util.Arrays;
public class test40 {
public static void main(String[] args) {
int[] ints = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int[] ints1 = Arrays.copyOfRange(ints, 3, 5);
System.out.println(Arrays.toString(ints1)); //[4, 5]
}
}
Arrays.fill()
import java.util.Arrays;
public class test40 {
public static void main(String[] args) {
int[] ints=new int[10];
Arrays.fill(ints,0);
System.out.println(Arrays.toString(ints)); //[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
}
}
Arrays.sort()
默认使用升序排序。
底层使用的是快速排序。
import java.util.Arrays;
public class test40 {
public static void main(String[] args) {
int[] ints = {5, 4, 8, 2, 4, 7, 6, 3, 0, 1, 9, 10};
Arrays.sort(ints);
System.out.println(Arrays.toString(ints)); //[0, 1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 10]
}
}
要想改变排序顺序:
第二个参数是一个接口,在调用方法的时候,要传递这个接口的实现类对象,作为排序的规则。
底层原理:插入排序+二分查找
默认把0索引的数据当作是有序的序列,1索引到最后是无序的序列。
遍历无序序列里面的每一个元素,假设当前遍历的元素是A,
利用二分查找确定A的插入点,拿着A跟插入点的元素进行比较,
比较的规则是Comparator<>(),
如果方法返回值是负数,拿着A继续跟前面的数据进行比较,
如果方法返回值是正数,拿着A继续跟后面的数据进行比较,
如果方法返回值是0,拿着A继续跟后面的数据进行比较,
直到确定A的最终位置。
compare(Integer o1, Integer o2):
o1:表示在无序序列中,遍历得到的每一个元素
o2:有序序列中的元素
返回值:
负数:表示当前要插入的元素小,放在前面
正数:表示当前要插入的元素大,放在后面
0:表示当前要插入的元素跟当前元素一样,也是放在后面
升序排序
import java.util.Arrays;
import java.util.Comparator;
public class test40 {
public static void main(String[] args) {
Integer[] integers = {5, 4, 8, 2, 4, 7, 6, 3, 0, 1, 9, 10};
Arrays.sort(integers, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o1-o2;
}
});
System.out.println(Arrays.toString(integers)); //[0, 1, 2, 3, 4, 4, 5, 6, 7, 8, 9, 10]
}
}
降序排序
import java.util.Arrays;
import java.util.Comparator;
public class test40 {
public static void main(String[] args) {
Integer[] integers = {5, 4, 8, 2, 4, 7, 6, 3, 0, 1, 9, 10};
Arrays.sort(integers, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2-o1;
}
});
System.out.println(Arrays.toString(integers)); //[10, 9, 8, 7, 6, 5, 4, 4, 3, 2, 1, 0]
}
}