Java 复习笔记 - 常见算法:API Arrays


Arrays 概述

Java的Arrays类是java.util包下的一个工具类,提供了一些操作数组的静态方法。Arrays类中包含的方法有排序、查找、比较、复制等。

Arrays类中的方法可以操作各种类型的数组,如int、double、String等。例如,sort()方法可以用来对int型数组进行排序,二分查找方法binarySearch()可以查找指定值在已排序数组中的位置。

此外,Arrays类还提供了一些其他的方法,如asList()方法可以将数组转换为List集合,fill()方法可以给数组中的每个元素赋值等。

需要注意的是,如果指定的数组引用为null,那么Arrays类中的方法会抛出NullPointerException异常。同时,在使用Arrays类的方法时,需要注意数组的长度和类型是否符合要求。

Arrays 常用方法

以下是Java Arrays类中常用的方法,掌握这些方法可以更好地处理和操作数组。

(一)Sort()

sort()方法是Java Arrays类中的一个静态方法,用于对数组进行排序。sort()方法使用双轴快速排序算法,该算法是Tim Peters在1993年发明的。

sort()方法可以接受一个数组作为参数,并根据元素的大小进行排序。如果数组中的元素实现了Comparable接口,那么排序将基于它们的compareTo方法。如果数组中的元素没有实现Comparable接口,那么可以使用Comparator接口来进行排序。

下面是一个示例,演示如何使用sort()方法对int型数组进行排序:

int[] arr = {
    
    5, 2, 8, 9, 1};
Arrays.sort(arr);
System.out.println(Arrays.toString(arr)); // 输出:[1, 2, 5, 8, 9]

在这个示例中,定义了一个int型数组arr,并使用sort()方法对其进行排序。排序后,使用toString()方法将数组转换为字符串并打印输出。输出结果为[1, 2, 5, 8, 9],说明数组已经被排序了。

(二)binarySearch()

binarySearch()方法是Java Arrays类中的一个静态方法,用于在已排序的数组中查找指定元素的位置。binarySearch()方法使用二分搜索算法,该算法是一种高效的搜索算法,可以在已排序的数组中快速查找指定元素。

binarySearch()方法接受两个参数:要搜索的数组和要查找的元素。它返回该元素在数组中的索引,如果找不到该元素,则返回-1。

下面是一个示例,演示如何使用binarySearch()方法在已排序的int型数组中查找指定元素:

int[] arr = {
    
    1, 2, 5, 8, 9};
int index = Arrays.binarySearch(arr, 5);
System.out.println(index); // 输出:2

在这个示例中,定义了一个已排序的int型数组arr,并使用binarySearch()方法查找元素5的位置。由于元素5在数组中的索引为2,因此输出结果为2。

需要注意的是,binarySearch()方法要求传入的数组必须是已排序的,否则会抛出IllegalArgumentException异常。同时,由于二分搜索算法只能在已排序的数组中使用,因此在使用binarySearch()方法之前,需要先对数组进行排序。

(三)equals()

equals()方法是Java Arrays类中的一个静态方法,用于比较两个数组是否相等。equals()方法接受两个参数:要比较的两个数组。

equals()方法会比较两个数组的长度和对应的元素是否相等,如果两个数组的长度和对应的元素都相等,那么这两个数组就是相等的。如果两个数组的长度不相等或者对应位置的元素不相等,那么这两个数组就是不相等的。

下面是一个示例,演示如何使用equals()方法比较两个数组是否相等:

int[] arr1 = {
    
    1, 2, 3};
int[] arr2 = {
    
    1, 2, 3};
boolean isEqual = Arrays.equals(arr1, arr2);
System.out.println(isEqual); // 输出:true

在这个示例中,定义了两个int型数组arr1和arr2,并使用equals()方法比较它们是否相等。由于arr1和arr2的长度和对应位置的元素都相等,因此输出结果为true。

(四)fill()

fill()方法是Java Arrays类中的一个静态方法,用于将指定的值赋给数组的每一个元素。fill()方法接受三个参数:要填充的数组、要填充的值和要填充的起始位置。

fill()方法会将指定的值赋给数组的每一个元素,从指定的起始位置开始,直到数组的末尾。如果指定的起始位置大于等于数组的长度,那么fill()方法将不会执行任何操作。

下面是一个示例,演示如何使用fill()方法将指定值赋给数组的每一个元素:

int[] arr = new int[5];
Arrays.fill(arr, 10);
System.out.println(Arrays.toString(arr)); // 输出:[10, 10, 10, 10, 10]

在这个示例中,定义了一个长度为5的int型数组arr,并使用fill()方法将10赋给数组的每一个元素。然后,使用toString()方法将数组转换为字符串并打印输出。输出结果为[10, 10, 10, 10, 10],说明数组的每个元素都被赋值为10了。

(五)copyOf()

copyOf()方法是Java Arrays类中的一个静态方法,用于将一个数组复制到一个新的数组中。copyOf()方法接受两个参数:要复制的源数组和要复制的长度。

copyOf()方法会创建一个新的数组,长度为指定的长度,并将源数组中的元素复制到新数组中。如果源数组的长度小于指定的长度,那么新数组的剩余位置将用null填充(对于对象数组)或用0填充(对于基本类型数组)。

下面是一个示例,演示如何使用copyOf()方法将一个数组复制到另一个数组中:

int[] arr1 = {
    
    1, 2, 3, 4, 5};
int[] arr2 = Arrays.copyOf(arr1, 3);
System.out.println(Arrays.toString(arr2)); // 输出:[1, 2, 3]

在这个示例中,定义了一个int型数组arr1,并使用copyOf()方法将其复制到arr2中,长度为3。然后,使用toString()方法将arr2转换为字符串并打印输出。输出结果为[1, 2, 3],说明arr1的前三个元素被复制到arr2中了。

(六)copyOfRange()

copyOfRange()方法是Java Arrays类中的一个静态方法,用于将一个数组的一部分复制到另一个数组中。copyOfRange()方法接受三个参数:要复制的源数组、要复制的起始位置和要复制的长度。

copyOfRange()方法会创建一个新的数组,长度为指定的长度,并将源数组中从起始位置开始的元素复制到新数组中。如果源数组的长度小于起始位置加上要复制的长度,那么新数组的剩余位置将用null填充(对于对象数组)或用0填充(对于基本类型数组)。

下面是一个示例,演示如何使用copyOfRange()方法将一个数组的一部分复制到另一个数组中:

int[] arr1 = {
    
    1, 2, 3, 4, 5};
int[] arr2 = Arrays.copyOfRange(arr1, 1, 4);
System.out.println(Arrays.toString(arr2)); // 输出:[2, 3, 4]

在这个示例中,定义了一个int型数组arr1,并使用copyOfRange()方法将其从索引1开始,长度为3的部分复制到arr2中。然后,使用toString()方法将arr2转换为字符串并打印输出。输出结果为[2, 3, 4],说明arr1的从索引1开始,长度为3的部分被复制到arr2中了。

猜你喜欢

转载自blog.csdn.net/m0_62617719/article/details/132881236