Java中的Arrays類使用詳解


首先先創建一個打印數組的方法,方便后面直接使用

public static void output(int []a) { for(int i=0;i<a.length;i++) { System.out.printf(a[i]+" "); } System.out.println(); }

1、填充數組:fill

eg1.

int []arr = new int[5]; Arrays.fill(arr, 2); output(arr);

結果是:2 2 2 2 2 
分析:給所有值賦值2 
eg2.

int []arr = new int[5]; Arrays.fill(arr, 1,3,8); output(arr);

結果是:0 8 8 0 0 
分析:給第1位(0開始)到第3位(不包括)賦值8

2、數組元素排序:sort

eg1.

int []arr = {3,2,1,5,4}; Arrays.sort(arr); output(arr);

結果是:1 2 3 4 5 
分析:給所有數按升序排序 
eg2.

int []arr = {3,2,1,5,4}; Arrays.sort(arr,1,3); output(arr);

結果是:3 1 2 5 4 
分析:給第1位(0開始)到第3位(不包括)排序

3、比較數組元素是否相等:equals

int []arr1 = {1,2,3}; int []arr2 = {1,2,3}; System.out.println(Arrays.equals(arr1,arr2));

結果是:true 
分析:如果是arr1.equals(arr2),則返回false,因為equals比較的是兩個對象的地址,不是里面的數,而Arrays.equals重寫了equals,所以,這里能比較元素是否相等。 
這里補充一下,如果還是不用Arrays.equals,那么我們應該如何重寫equals來比較兩個數組的元素是否相等呢?這里提供一段代碼

//Compare the contents of two int arrays public static boolean isEquals(int[] a, int[] b) { if( a == null || b == null ) { return false; } if(a.length != b.length) { return false; } for(int i = 0; i < a.length; ++i ) { if(a[i] != b[i]) { return false; } } return true; }

4、二分查找法找指定元素的索引值(下標):binarySearch

數組一定是排好序的,否則會出錯。找到元素,只會返回最后一個位置 
eg1:

int []arr = {10,20,30,40,50}; System.out.println(Arrays.binarySearch(arr, 20));

結果是:1 
分析:能找到該元素,返回下標為1(0開始) 
eg2:

int []arr = {10,20,30,40,50}; System.out.println(Arrays.binarySearch(arr, 35));

結果是:-4 
分析:找不到元素,返回-x,從-1開始數,如題,返回-4 
eg3:

int []arr = {10,20,30,40,50}; System.out.println(Arrays.binarySearch(arr, 0,3,30));

結果是:2 
分析:從0到3位(不包括)找30,找到了,在第2位,返回2 
eg4:

int []arr = {10,20,30,40,50}; System.out.println(Arrays.binarySearch(arr, 0,3,40));

結果是:-4 
分析:從0到3位(不包括)找40,找不到,從-1開始數,返回-4

5、截取數組:copeOf和copeOfRange

eg1: copy

int []arr = {10,20,30,40,50}; int []arr1 = Arrays.copyOf(arr, 3); output(arr1);

結果:10 20 30 
分析:截取arr數組的3個元素賦值給姓數組arr1 
eg2: copyOfRange

int []arr = {10,20,30,40,50}; int []arr1 = Arrays.copyOfRange(arr,1,3); output(arr1);

結果:20 30 
分析:從第1位(0開始)截取到第3位(不包括)

6、其他

還有hashCode,toString,clone等這里就不介紹了,暫時用的少


本文地址:http://liuyanzhao.com/2863.html 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM