DK 中提供了一个专门用于操作数组的工具类,即Arrays 类,位于java.util 包中。该类提供了一些列方法来操作数组,如排序、复制、比较、填充等,用户直接调用这些方法即可不需要自己编码实现,降低了开发难度。
java.util.Arrays 是一个与数组相关的工具类,里面提供了大量静态方法,用来事项数组常见的操作。
一、方法
1、public static String toString(数组)
该方法将一个数组转换成一个字符串,该方法按序把多个数组元素连缀在一起,多个数组元素使用英文逗号和空格隔开,示例:
public static void main(String[] args) {
//toString:将数组变成字符串
int []arr={1,2,3,4,5};
System.out.println(Arrays.toString(arr));//[1, 2, 3, 4, 5]
}
2. 二分查询int binarySearch(type[] a,type key)(数组,要查找的元素)
该方法使用二分查询key元素值在数组中出现的索引,如果a数组不包含key元素值,则返回负数。调用该方法时要求数组中元素已经按升序排列。示例:
//binarySearch:二分查找法查找元素
//细节:二分查找的前提: 数组中的元素必须是有序的,数组中的元素必须是升序了
System.out.println(Arrays.binarySearch(arr,10));//-6
System.out.println(Arrays.binarySearch(arr,2));//1
System.out.println(Arrays.binarySearch(arr,20));//-6
3.int[] copyOf(type[] original,int length)(原数组,新数组长度)
该方法会把original数组复制成一个新数组,其中length是新数组的长度,如果length小于original数组的长度,则新数组就是原数组的前length个元素,如果length大于original数组的长度,则新数组的前面元素就是原数组的全部元素,后面补充0(数值类型),false(布尔类型)或null(引用类型)。示例:
//copyOf数组
//参数一: 老数组
//参数二:新数组的长度
//方法的底层会根据第二个参数来创建新的数组
//如果新数组的长度小于老数组的长度,会部分拷贝
//如果新数组的长度是等于老数组的长度,会完全拷贝
//如果新数组的长度大于老数组的长度,会补上默认初始值
// int []arr={1,2,3,4,5};
int[]newArr=Arrays.copyOf(arr,10);
System.out.println(Arrays.toString(newArr));
System.out.println();//[1, 2, 3, 4, 5, 0, 0, 0, 0, 0]
}
4 type[] copyOfRange(type[] original,int from,int to)
该方法与前一个方法类似,该方法是只复制from到to索引的元素,注意:到to但不包含to。示例
// int []arr={1,2,3,4,5};
//copyOfRange:拷贝数组(指定范围)
//细节报左不包右,包头不报尾
int []newArr2 = Arrays.copyOfRange(arr, 0,3);
System.out.println(Arrays.toString(newArr2));
System.out.println("--------copyOfRange-----------");//[1, 2, 3]
5.void fill(type[] a,int int ,type val)
该方法与前面一个方法类似,区别是该方法将a数组fromIndex到toIndex索引的元素赋值为val,注意:到toIndex但不包含toIndex。示例:
//fill填充数组
// int []arr={1,2,3,4,5};
Arrays .fill(arr,100);
System.out.println(Arrays.toString(arr));//[100, 100, 100, 100, 100]
6.void sort(type[] a)
该方法对数组a的元素进行升序排序。示例:
//sort:排序,默认情况下是升序
int []arr2={10,32,3,4,1,7,6,2};
Arrays.sort(arr2);
System.out.println(Arrays.toString(arr2));//[1, 2, 3, 4, 6, 7, 10, 32]
降序
package Array;
import java.util.Arrays;
import java.util.Comparator;
// public static void sort(数组,排序规则) 按照指定的规则排序
//参数一 :要排序的数组
//参数二: 排序的规则
//细节: 只能给引用数据类型进行排序,如果数组是基本类型,需要转换成包装类
public class demo2 {
public static void main(String[] args) {
Integer []arr = {2,3,1,5,10,7,8};
//第二个参数是一个接口,所以我们在调用方法的时候,需要传递这个接口的实现类对象--接口多态
//作为排序规则
// 但是这个实现类,我只要用一次,所以我们想到了匿名内部类
//简单理解: o1-o2:升序
//o2-o1:降序
Arrays.sort(arr,new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2-o1;
}
});
System.out.println(Arrays.toString(arr));//降序[10, 8, 7, 5, 3, 2, 1]
}
}