在数组的学习中,我们看到数组只有一个长度可提供引用,就是数组名.length获取数组的长度,那么有没有的类和方法可提供数组操作呢?
Java中提供Arrays 类作为对数组的操作,Arrays 类存在于util工具类里,Arrays 类里静态方法,可以直接引用。
序号 | 方法名 | 方法说明 | 语法格式 | 示例 |
1 | ToString | 返回指定数组的内容的字符串表示形式 | Arrays.toString(array) | Arrays.toString(nums),返回数组 |
2 | Fill | 将指定的字节值分配给指定字节数组的每个元素 | Arrays.fill(array, val) | Arrays.fill(nums,3),把3赋值给nums数组中的每个元素 |
Fill | 将指定的字节值分配给指定字节数组的指定范围的每个元素。 | Arrays.fill(array, fromIndex, toIndex, val) |
Arrays.fill(nums,1,3,10),把10赋值给数组下标从1开始,个数为3个的元素, 即赋值给数组元素下标为0,1,2 |
|
3 | equals | 判断2个数组是否相等,相等返回true,否则为false | Arrays.equal(array1, array2) | Arrays.equals(nums1, nums2),判断nums1和nums2是否相等 |
4 | copyof | 复制指定的数组,用零截取或填充(如有必要),以便复制具有指定的长度 | Arrays.copyof(array1, newLength) | Arrays.copyof(nums1,3),把数组的前3个元素复制到新数组 |
5 | copyfoRange | 将指定数组的指定范围复制到新数组中。 | Arrays.copyofRange(array, from, to) |
Arrays.copyofRange(nums1,3,5),把数组从下标3开始到下标4的元素复制到新数组, 下标5为结束位置。 |
6 | binarySearch | 使用二叉搜索算法搜索指定数组 | Arrays.binarySearch(array, key) | Arrays.binarySearch(nums,3),搜索nums数组中元素为3,返回下标值 |
7 | sort | 按照数字顺序排列指定的数组。 | Arrays.sort(array) | Arrays.sort(nums),按照数字顺序排列 |
sort | 按升序排列数组的指定范围 | Arrays.sort(array, from, to) | Arrays.sort(nums,1,3),对数组nums中的1-3元素按照升序排列 | |
8 | parallelSort | 按照数字顺序排列指定的数组。 | Arrays.parallelSort(array) | Arrays.parallelSort(nums),按照数字顺序排列 |
按升序排列数组的指定范围 | Arrays.parallelSort(array, from, to) | Arrays.parallelSort(nums,1,3),对数组nums中的1-3元素按照升序排列 | ||
9 | hashCode | 根据指定数组的内容返回哈希码 | Arrays.hashCode(array) | Arrays.hashCode(nums),返回nums的哈希码 |
应用
1.ToString方法
import java.util.Arrays; public class Array03 { public static void main(String[] args) { int[] num = {1, 3, 2, 88, 50}; System.out.println(Arrays.toString(num)); } }
数组我们一般通过for-each打印输出,通过toString方法可以更快速,运行结果:
2.Fill方法
import java.util.Arrays; public class Array03 { public static void main(String[] args) { int[] nums = {1, 3, 2, 88, 50}; Arrays.fill(nums, 6); System.out.println(Arrays.toString(nums)); } }
把6赋值给nums里的所有元素,运行结果:
指定只赋值给数组中下标为0,1的元素,如下:
import java.util.Arrays; public class Array03 { public static void main(String[] args) { int[] nums = {1, 3, 2, 88, 50}; Arrays.fill(nums, 0,2,6); System.out.println(Arrays.toString(nums)); } }
运行结果:
3.equals方法
import java.util.Arrays; public class Array03 { public static void main(String[] args) { int[] nums1 = {1, 3, 2, 88, 50}; int[] nums2 = {1, 3, 2, 66, 50}; System.out.println(Arrays.equals(nums1,nums2)); } }
运行结果:
4.copyof
import java.util.Arrays; public class Array03 { public static void main(String[] args) { int[] nums1 = {1, 3, 2, 88, 50}; int[] nums2 = Arrays.copyOf(nums1, 3); System.out.println(Arrays.toString(nums2)); } }
把数组nums1的前3个元素复制新的数组num2中,运行结果:
5.copyofRange
import java.util.Arrays; public class Array03 { public static void main(String[] args) { int[] nums1 = {1, 3, 2, 88, 50}; int[] nums2 = Arrays.copyOfRange(nums1, 1,3); System.out.println(Arrays.toString(nums2)); } }
把数组num1的下标1开始的元素到下标为2的元素复制到新数组nums2,这里的3是结束位置,运行结果:
6.binarySearch方法
import java.util.Arrays; public class Array03 { public static void main(String[] args) { int[] nums = {1, 3, 2, 88, 50}; System.out.println(Arrays.binarySearch(nums,88)); } }
查找数组中元素为88的索引位置,运行结果:
如果找不到索引位置,返回-1或者”-“(插入点)
7.sort方法
import java.util.Arrays; public class Array03 { public static void main(String[] args) { int[] nums = {1, 3, 2, 88, 50}; Arrays.sort(nums); System.out.println(Arrays.toString(nums)); } }
对整个数组进行排序,运行结果
指定数组范围进行排序,
import java.util.Arrays; public class Array03 { public static void main(String[] args) { int[] nums = {1, 3, 2, 88, 50, 19, 10}; Arrays.sort(nums,3,6); System.out.println(Arrays.toString(nums)); } }
对nums数组下标3到5的元素进行排序,Arrays.sort(nums,3,6)中的6为结束位置。
运行结果:
8.parallelSort方法
import java.util.Arrays; public class Array03 { public static void main(String[] args) { int[] nums = {1, 3, 2, 88, 50, 19, 10}; Arrays.parallelSort(nums); System.out.println(Arrays.toString(nums)); } }
运行结果:
9.hashCode方法
import java.util.Arrays; public class Array03 { public static void main(String[] args) { int[] nums = {1, 3, 2, 88, 50, 19, 10}; System.out.println(Arrays.hashCode(nums)); } }
运行结果
如果两个数组相等,他们的哈希码也一样,比如
import java.util.Arrays; public class Array03 { public static void main(String[] args) { int[] nums1 = {1, 3, 2, 88, 50, 19, 10}; int[] nums2 = {1, 3, 2, 88, 50, 19, 10}; System.out.println(Arrays.hashCode(nums1)); System.out.println(Arrays.hashCode(nums2)); } }
运行结果