1. 程式人生 > >Java陣列工具類Arrays-18-常用方法介紹

Java陣列工具類Arrays-18-常用方法介紹

       前面我們學習了冒泡和選擇排序以及二分查詢,還有陣列如何轉換成字串,其實接下來學習的這個Arrays類都提供瞭解決這些問題的方法。Arrays類是一個數組工具類,就像String類是處理字串的工具類一樣,Arrarys就是為解決陣列相關操作而設計的一個工具類。下面介紹三個常用的Arrays類下方法,分別是轉字串輸出,排序和二分查詢。

1.陣列轉換成字串

       前面幾篇文章(氣泡排序之前),我們分別用了String類和StringBuffer類方法去實現把一個數組輸出成一個字串。例如int[] arr = {11,22,33,44} 輸出後變成 [11,22,33,44].前面我們寫了好多行程式碼,這裡使用Arrays.toString(),一行程式碼就搞定。

package arrays;
import java.util.Arrays;

public class Test_Arrays {

   public static void main(String[] args) {

      int[] arr = {23,56,79,24,80,13};

      // 使用toString方法輸出陣列

      System.out.println(Arrays.toString(arr));

   }
}

輸出:[23, 56, 79, 24, 80, 13]

上面說明Arrays類重寫了Object的toString方法,你在Eclipse上按下Ctrl,點選toString()方法,檢視原始碼實現,發現和我們前面用陣列寫的方法是一樣的。

2.排序

package arrays;

import java.util.Arrays;

public class Test_Arrays {

   public static void main(String[] args) {

      int[] arr = {23,56,79,24,80,13};
      // 使用sort進行排序
      Arrays.sort(arr);
      System.out.println(Arrays.toString(arr));
   }

}

輸出:[13, 23, 24, 56, 79, 80]

點選sort()進入原始碼,發現是使用了快速排序的方法。

3.二分查詢

package arrays;
import java.util.Arrays;

public class Test_Arrays {

   public static void main(String[] args) {

      int[] arr = {23,56,79,24,80,13};
      // 使用sort進行排序
      Arrays.sort(arr);
      // 二分查詢
      System.out.println(Arrays.binarySearch(arr, 23));
      System.out.println(Arrays.binarySearch(arr, 56));
      System.out.println(Arrays.binarySearch(arr, 99));
 
   }
}

輸出:

1

3

-7

      來看看為什麼是輸出-7,我們開啟API,搜尋找到Arrays類,然後找到binarySearch方法其中返回部門描述有這麼一段話:如果它包含在陣列中,則返回搜尋鍵的索引;否則返回 (-(插入點) - 1)。插入點 被定義為將鍵插入陣列的那一點:即第一個大於此鍵的元素索引,如果陣列中的所有元素都小於指定的鍵,則為a.length。注意,這保證了當且僅當此鍵被找到時,返回的值將 >=0。

       什麼是插入點呢?上面我們要查詢99,而陣列排序後最多值對應索引為5,程式碼認為99應該插入在索引5後面,也就是索引6,索引輸出-6-1=-7. 你繼續點選開啟二分查詢原始碼,發現和我們前面介紹的二分查詢程式碼很類似。