在數組的學習中,我們看到數組只有一個長度可提供引用,就是數組名.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)); } }
運行結果