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文件書籍教程,需要的話都可以免費分享給大家。