Arrays类详解
前言:Arrays类包含用来操作数组(比如排序和搜索) 的各种方法,因为数组本身没有相应的类与方法
除非特别注明,否则如果指定数组引用为 null,则此类中的方法都会抛出 NullPointerException
。
常用方法(静态static)
-
public static String toString(int[] a)
返回指定数组内容的字符串表示形式
public static void main(String[] args) {
// 定义int 数组
int[] arr = {2,34,35,4,657,8,69,9};
// 打印数组,输出地址值
System.out.println(arr); // [I@2ac1fdc4
// 数组内容转为字符串
String s = Arrays.toString(arr);
// 打印字符串,输出内容
System.out.println(s); // [2, 34, 35, 4, 657, 8, 69, 9]
}
-
public static void sort(int[] a)
对指定的 int 型数组按数字升序进行排序
public static void main(String[] args) {
// 定义int 数组
int[] arr = {24, 7, 5, 48, 4, 46, 35, 11, 6, 2};
System.out.println("排序前:"+ Arrays.toString(arr)); // 排序前:[24, 7, 5, 48, 4, 46, 35, 11, 6,
2]
// 升序排序
Arrays.sort(arr);
System.out.println("排序后:"+ Arrays.toString(arr));// 排序后:[2, 4, 5, 6, 7, 11, 24, 35, 46,
48]
}
3 .
public static int binarySearch(int[] a,int key)
使用二分搜索法来搜索指定的 int 型数组,以获得指定的值。必须在进行此调用之前对数组进行排序(通过 sort(int[]) 方法)。如果没有对数组进行排序,则结果是不确定的。如果数组包含多个带有指定值的元素,则无法保证找到的是哪一个。
/**
* System.out.println(arr);
* System.out.println(Arrays.binarySearch(arr,7));
* System.out.println("------------");
* for (int i : arr) {
* System.out.println(i);
* }
* System.out.println("----------------");
* //先排序
* Arrays.sort(arr);
* for (int i : arr) {
* System.out.println(i);
* }
* System.out.println("-----------");
* //二分查找法
* int i = Arrays.binarySearch(arr,7);
* System.out.println(i);
*/
4 .
public static void fill(int[] a,int val)
将指定的 int 值分配给指定 int 型数组的每个元素。
int[] arr = {1,2,45,56,67,6,7,8};
Arrays.fill(arr,9);
5 .
public static boolean equals(byte[] a, byte[] a2)
如果两个指定的 byte 型数组彼此相等,则返回 true。如果两个数组包含相同数量的元素,并且两个数组中的所有相应元素对都是相等的,则认为这两个数组是相等的。换句话说,如果两个数组以相同顺序包含相同的元素,则两个数组是相等的。此外,如果两个数组引用都为 null,则认为它们是相等的。
6 .
public static int hashCode(short[] a)
基于指定数组的内容返回哈希码。对于任何两个满足 Arrays.equals(a, b) 的 short 型数组 a 和 b,也可用说 Arrays.hashCode(a) == Arrays.hashCode(b)。
练习
使用 Arrays 相关的API,将一个随机字符串中的所有字符升序排列,并倒序打印。
public class ArraysTest {
public static void main(String[] args) {
// 定义随机的字符串
String line = "ysKUreaytWTRHsgFdSAoidq";
// 转换为字符数组
char[] chars = line.toCharArray();
// 升序排序
Arrays.sort(chars);
// 反向遍历打印
for (int i = chars.length‐1; i >= 0 ; i‐‐) {
System.out.print(chars[i]+" "); // y y t s s r q o i g e d d a W U T S R K H F A
}
}
}