1. 程式人生 > 實用技巧 >Java中的陣列的使用

Java中的陣列的使用

在 Java 泛型出現之前,只有陣列可以用來儲存指定型別的物件;在自動裝箱機制出現之前,只有陣列可以用來儲存基本資料型別;也就是說,在泛型和自動裝箱機制出現之前,陣列在 Java 當中的分量舉足輕重。

況且陣列還是一種效率最高的儲存和隨機訪問物件序列的方式,但遺憾的是,陣列的長度是固定的——舉個例子,建立它的時候指定長度是 6,就只能儲存 6 個元素,當你想放第 7 個元素時,是無法做到的。

隨著計算機硬體能力的提升,開發人員在儲存一組資料的時候更願意使用 ArrayList 而不是陣列。儘管 ArrayList 內部是通過陣列實現的,但與陣列相比,它的容量能夠自動增長,還有很多陣列沒有的特性。能不使用陣列就別使用陣列,除非要用陣列來改善效能問題。

01、建立陣列

讓我們來給Java陣列下一個明確的定義——陣列用來儲存固定長度同類型元素。

示例如下:

int[] ints相較於int ints1[]是優選的宣告方式,int ints1[]風格來自於 C/C++ 語言 ,便於 C/C++ 程式設計師能夠快速地理解Java語言。

陣列的建立方式有兩種,一種是通過new關鍵字,同時指定長度,然後通過array[index] = value的方式賦值;另外一種方式是通過{value1, value2, ...}的方式直接建立並同時賦值。

最常見的應用如下(日期的佔位符字串):

private static String[] parsePatterns = { "yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM", "yyyy/MM/dd",

"yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyy/MM", "yyyy.MM.dd", "yyyy.MM.dd HH:mm:ss", "yyyy.MM.dd HH:mm", "yyyy.MM" };

02、小心length

在使用List和Map的時候,可以直接通過size()方法獲取容器的實際大小(長度)。陣列也有一個關鍵字length來獲取大小(長度),但意思大不相同。length只表示陣列所能夠容納元素的大小,而並非陣列的實際大小。

舉例如下:

03、Arrays工具類

Java的設計者可謂良苦用心,特意為陣列設計了一個專屬工具類——java.util.Arrays

,裡面有幾個常用的方法我們來介紹一下。

1)sort()

sort()方法用來對陣列進行排序,該方法要求陣列的元素要實現Comparable介面。如果排序的元素不是String或者基本資料型別,就需要主動實現Comparable介面(基本資料型別和String本身已經實現了Comparable介面)。

示例如下:

sort()方法排序後的結果就是[二, 沉, 王, 默]。

2)binarySearch()

binarySearch()方法用來對陣列進行二分查詢(返回值所在的下標,未找到的話返回-1),呼叫該方法之前必須要先排序。

示例如下:

由於sort()方法排序後的結果為[二, 沉, 王, 默],所以Arrays.binarySearch(strs, "二")返回下標值0。

3)asList()

asList()方法用來將陣列轉化成List(ArrayList),原始碼如下:

那如何將List轉化成陣列呢?通過List的toArray()方法。可參照下例體驗由陣列定義方式不同帶來的細微差別。

當宣告的陣列大小超出List的大小後,toArray()方法會對轉換後的陣列進行補位(null)。

4)toString()

toString()方法用來將陣列進行字串格式的輸出([value1, value2, value3, ...]的格式),原始碼如下:

PS:如果大家在學習過程中遇到什麼問題,或者缺乏相關的學習資料,可檢視我的公告欄獲取,有問題隨問隨答,還有我這段時間整理的一些Java學習手冊,面試題,開發工具,PDF文件書籍教程,需要的話都可以免費分享給大家。