1. 程式人生 > >如何使用Arrays工具類運算元組

如何使用Arrays工具類運算元組

介紹

我們要先知道Arrays 是什麼。 java.util.Arrays 類是 JDK 提供的一個工具類主要用來運算元組,比如陣列的複製轉換等各種方法,Arrays 的方法都是靜態方法可以通過Arrays.方法名稱直接呼叫。本文主要分析一些常用的方法。

sort方法

sort方法主要用於排序,有一系列的過載方法不光支援7種資料型別,同時也支援Object和Comparator(比較器)

int

定義一個int陣列,具體程式碼如下

輸出結果:

[1, 3, 4, 5, 9, 21, 34, 35, 44]

String

如一下程式碼:

輸出結果:

[A, B, C, D, F, K, Y]

asList

asList的主要作用就是返回由指定陣列支援的ArraryList列表,asList是返回一個ArraryList但是這個ArraryList是Arrays 內部的ArraryList所以我們只能對其進行檢視或者修改,但是不能進行新增或者刪除操作。

下面來看個例子:

使用asList轉換成ArraryList後修改是可以執行的。再看下面的例子

新增一個元素會丟擲UnsupportedOperationException異常

這是為什麼呢。看一下原始碼。


在上面說到asList是返回一個自己的內部類,然後這個內部類的話並沒有去實現add方法,在呼叫add方法的時候會呼叫父類AbstractList裡面的方法,所以說才會丟擲UnsupportedOperationException可以看下面的原始碼

那如果要對返回的陣列進行操作的話要怎麼獲取一個可以Add的List,非常簡單,看以下例子

引用資料型別和基本資料型別的區別

說到這個可能大多人都不知道。我們來看一個例子。

這個例子非常簡單,就是把兩個陣列轉換成List集合。那我們輸出一下。

輸出結果:

String :7
int :1

看到這裡就不禁有疑問了。問什麼我第二個int陣列有有五個屬性但是輸出的數量卻是1呢?

先去看一下asList的原始碼。注意到asList方法是以下定義:

asList方法接收一個可變引數,並且這個可變引數型別是作為泛型的引數。那麼在Java中基本資料型別不能作為泛型的引數,陣列是引用資料型別所以陣列是可以泛型化,所以使用了int[]作為引數型別,而不是用int作為引數型別上面的方法如果補全的話應該是以下。

List<int[]> intList = Arrays.asList(intData);

那這個問題如何解決呢?

將int替換成包裝型別即可

binarySearch

binarySearch用來查詢元素。看下方例子

輸出結果:

3

返回所在的下標。

copyOf

看下方例子

將intData的資料複製到int2中引數要指定新陣列的長度。

輸出結果:

[1, 2, 3, 4]

toString

在上方使用的例子用也介紹了toString主要就是用來輸出陣列。

主要就是這幾個方法常用。歡迎轉發關注。