Arrays 類 常見用法詳解
阿新 • • 發佈:2020-11-05
在陣列的學習中,我們看到陣列只有一個長度可提供引用,就是陣列名.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)); } }
執行結果