使用前的准备:导包
import java.util.Arrays;
boolean equals(int[],int[])方法: 可以用于判断两个数组是否相等,返回值是布尔类型(true或false) 案例:
import java.util.Arrays;
/**
* @author .29.
* @create 2022-09-11 11:34
*/
public class ArraysTool {
public static void main(String[] args) {
int[] arr1 = new int[]{1,2,3,4,5,6};
int[] arr2 = new int[]{1,2,3,4,5,6};
int[] arr3 = new int[]{1,4,3,2,5};
int[] arr4 = arr1;
int[] arr5 = new int[]{};
int[] arr6 = new int[]{};
//与相等数组比较
boolean eql1 = Arrays.equals(arr1,arr2);
//与不相等数组比较
boolean eql2 = Arrays.equals(arr1,arr3);
//数组与本身比较
boolean eql3= Arrays.equals(arr1,arr4);
//与空数组比较
boolean eql4= Arrays.equals(arr1,arr5);
//两个空数组比较
boolean eql5= Arrays.equals(arr5,arr6);
System.out.println("与相等数组比较:"+eql1);
System.out.println("与不等数组比较:"+eql2);
System.out.println("数组与本身比较:"+eql3);
System.out.println("与空数组的比较:"+eql4);
System.out.println("两个空数组比较:"+eql5);
}
}
控制台输出:
String toString(int[])方法,可以用来输出数组,将数组转化成字符串,返回值是String类型。 案例:
import java.util.Arrays;
/**
* @author .29.
* @create 2022-09-11 11:34
*/
public class ArraysTool {
public static void main(String[] args) {
int[] arr = new int[]{1,2,3,4,5,6};
int[] arr1 = new int[]{};
int[] arr2 = null;
System.out.println(Arrays.toString(arr));
System.out.println(Arrays.toString(arr1));
System.out.println(Arrays.toString(arr2));
}
}
控制台输出:
void fill(int[] a,int fromIndex,int toIndex,int val) 方法,可以用来将指定的值填入到数组当中,没有返回值(返回值为空)。 注意:该方法用于填充覆盖原有的元素,不能用于增添元素,否则出现数组下标越界异常(java.lang.ArrayIndexOutOfBoundsException)
案例:
import java.util.Arrays;
/**
* @author .29.
* @create 2022-09-11 11:34
*/
public class ArraysTool {
public static void main(String[] args) {
int[] arr = new int[]{1,2,3,4,5,6};
int a = 29;
int b = 24;
//(int[],int)不指定下标,完全填充
Arrays.fill(arr,a);
System.out.println(Arrays.toString(arr));
//(int[],int fromIndex,int toIndex,int)指定下标
// 从fromIndex到toIndex前的元素被填充
Arrays.fill(arr,1,2,b);
Arrays.fill(arr,4,6,24);
//输出
System.out.println(Arrays.toString(arr));
//以下情况为不填充
Arrays.fill(arr,1,1,b);
Arrays.fill(arr,2,2,b);
Arrays.fill(arr,3,3,b);
}
}
控制台输出:
void sort(int[] a)方法,可用来对数组进行排序,返回值为空(没有返回值)。 案例: LeetCode原题链接:最小K个数 题目:面试题 17.14. 最小K个数
题目描述:设计一个算法,找出数组中最小的k个数。以任意顺序返回这k个数均可。
示例:
输入: arr = [1,3,5,7,2,4,6,8], k = 4
输出: [1,2,3,4]
实现代码:
class Solution {
public int[] smallestK(int[] arr, int k) {
//开辟空间,用于存放最小k个数
int[] nums = new int[k];
//调用Arrays工具类的sort()方法,排序数组。
Arrays.sort(arr);
//将排序好数组的前k个数复制到开辟的空间中
for(int i = 0;i < k; ++i){
nums[i] = arr[i];
}
//返回
return nums;
}
}
提交结果:
int binarySearch(int[] a,int key)方法,用于对排序好的数组进行二分法查找指定的值,返回查找到指定值的下标。 案例:
import java.util.Arrays;
/**
* @author .29.
* @create 2022-09-11 11:34
*/
public class ArraysTool {
public static void main(String[] args) {
int[] arr = new int[]{1,2,3,4,5,6,7,8};
int a = Arrays.binarySearch(arr,1);
int b = Arrays.binarySearch(arr,2);
int c = Arrays.binarySearch(arr,3);
int d = Arrays.binarySearch(arr,4);
int e = Arrays.binarySearch(arr,5);
int f = Arrays.binarySearch(arr,6);
int g = Arrays.binarySearch(arr,7);
int h = Arrays.binarySearch(arr,8);
System.out.println(a+" "+b+" "+c+" "+d+" "+e+" "+f+" "+g+" "+h);
//未排序
int[] arr1 = {4,8,6,1,3,2,5,7};
a = Arrays.binarySearch(arr1,1);
b = Arrays.binarySearch(arr1,2);
c = Arrays.binarySearch(arr1,3);
d = Arrays.binarySearch(arr1,4);
e = Arrays.binarySearch(arr1,5);
f = Arrays.binarySearch(arr1,6);
g = Arrays.binarySearch(arr1,7);
h = Arrays.binarySearch(arr1,8);
System.out.println(a+" "+b+" "+c+" "+d+" "+e+" "+f+" "+g+" "+h);
}
}
控制台输出: 未排序数组使用binarySearch(int[] a,int key)方法效果不理想。
copyOf()方法用于复制一个数组,可以指定返回数组的长度。 案例(与sort()方法案例一致): void sort(int[] a)方法,可用来对数组进行排序,返回值为空(没有返回值)。 案例: LeetCode原题链接:最小K个数 题目:面试题 17.14. 最小K个数
题目描述:设计一个算法,找出数组中最小的k个数。以任意顺序返回这k个数均可。
示例:
输入: arr = [1,3,5,7,2,4,6,8], k = 4
输出: [1,2,3,4]
实现代码:
class Solution {
public int[] smallestK(int[] arr, int k) {
//调用Arrays工具类的sort()方法,排序数组。
Arrays.sort(arr);
//将排序好的数组复制一份副本,指定副本长度为k
int[] nums = Arrays.copyOf(arr,k);
//返回
return nums;
}
}
题解结果:
补充:如果返回数组的指定长度newLength长度大于被拷贝数组长度,多出来的位置会被0替代。 案例:
import java.util.Arrays;
/**
* @author .29.
* @create 2022-09-11 11:34
*/
public class ArraysTool {
public static void main(String[] args) {
int[] arr2 = {29,29,29,29,29};
int[] ints = Arrays.copyOf(arr2, 10);
System.out.println(Arrays.toString(ints));
}
}
控制台输出:
总结:熟练使用工具类,可以减少代码量,有效提升工作效率,但是不要因此而忽略巩固基础。