java.util 類 Arrays
java.lang.Object
-java.util.Arrays
public class
Arrays extends Object
此類包含用來操作數組(比如排序和搜索)的各種方法。此類還包含一個允許將數組作為列表來查看的靜態工廠。
除非特別注明,否則如果指定數組引用為 null,則此類中的方法都會拋出 NullPointerException。
此類中所含方法的文檔都包括對實現 的簡短描述。應該將這些描述視為實現注意事項,而不應將它們視為規范 的一部分。實現者應該可以隨意替代其他算法,只要遵循規范本身即可。(例如,sort(Object[]) 使用的算法不必是一個合并排序算法,但它必須是穩定的。)
此類是 Java Collections Framework 的成員。
?
從以下版本開始: 1.2
方法摘要 static?<T>?List<T> asList (T...?a) ??????????返回一個受指定數組支持的固定大小的列表。static?int binarySearch (T[]?a, T?key) ??????????使用二分搜索法來搜索指定的 byte 型數組,以獲得指定的值。static?int binarySearch (T[]?a, int?fromIndex, int?toIndex, T?key) ??????????使用二分搜索法來搜索指定的 byte 型數組的范圍,以獲得指定的值。static?<T> int binarySearch (T[]?a, int?fromIndex, int?toIndex, T?key, Comparator<? super T>?c) ??????????使用二分搜索法來搜索指定數組的范圍,以獲得指定對象。static?<T> int binarySearch (T[]?a, T?key, Comparator<? super T>?c) ??????????使用二分搜索法來搜索指定數組,以獲得指定對象。static?<T> T[] copyOf (T[]?original, int?newLength) ??????????復制指定的數組,截取或用 null 填充(如有必要) ,以使副本具有指定的長度。static?<T,U> T[] copyOf (U[]?original, int?newLength, Class<? extends T[]>?newType) ??????????復制指定的數組,截取或用 null 填充(如有必要),以使副本具有指定的長度。static?<T> T[] copyOfRange (T[]?original, int?from, int?to) ??????????將指定數組的指定范圍復制到一個新數組。static?<T,U> T[] copyOfRange (U[]?original, int?from, int?to, Class<? extends T[]>?newType) ??????????將指定數組的指定范圍復制到一個新數組。static?boolean deepEquals (Object []?a1, Object []?a2) ??????????如果兩個指定數組彼此是深層相等 的,則返回 true。static?int deepHashCode (Object[]?a) ??????????基于指定數組的“深層內容”返回哈希碼。static?String deepToString (Object[]?a) ??????????返回指定數組“深層內容”的字符串表示形式。static?boolean equals (T[]?a, T[]?a2) ??????????如果兩個指定的 T 型數組彼此相等,則返回 true。static?void fill (T[]?a, int?fromIndex, int?toIndex, T?val) ??????????將指定的 T引用分配給指定T數組指定范圍中的每個元素。static?void fill (T[]?a, T?val) ??????????將指定的 T引用分配給指定T數組的每個元素。static?int hashCode (T[]?a) ??????????基于指定數組的內容返回哈希碼。static?void sort (T[]?a) ??????????對指定的 byte 型數組按數字升序進行排序。static?void sort (T[]?a, int?fromIndex, int?toIndex) ??????????對指定 byte 型數組的指定范圍按數字升序進行排序。static?<T> void sort (T[]?a, Comparator <? super T>?c) ??????????根據指定比較器產生的順序對指定對象數組進行排序。static?<T> void sort (T[]?a, int?fromIndex, int?toIndex, Comparator <? super T>?c) ??????????根據指定比較器產生的順序對指定對象數組的指定范圍進行排序。static?String toString (T[]?a) ??????????返回指定數組內容的字符串表示形式。
從類 java.lang.Object 繼承的方法 clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
public static <T> List<T>
asList (T...?a)
返回一個受指定數組支持的固定大小的列表。(對返回列表的更改會“直接寫”到數組。)此方法同?Collection.toArray()?一起,充當了基于數組的 API 與基于 collection 的 API 之間的橋梁。返回的列表是可序列化的,并且實現了?RandomAccess。此方法還提供了一個創建固定長度的列表的便捷方法,該列表被初始化為包含多個元素:
List<String> stooges = Arrays.asList("Larry", "Moe", "Curly");? 參數: a?- 支持列表的數組。 返回: 指定數組的列表視圖。
binarySearch
public static int
binarySearch (T[]?a,T?key)
使用二分搜索法來搜索指定的 T 型數組,以獲得指定的值。必須在進行此調用之前對數組進行排序(通過 sort(T[]) 方法)。如果沒有對數組進行排序,則結果是不確定的。如果數組包含多個帶有指定值的元素,則無法保證找到的是哪一個。?
參數: a - 要搜索的數組 key - 要搜索的值 返回: 如果它包含在數組中,則返回搜索鍵的索引;否則返回 (-(插入點) - 1)。插入點 被定義為將鍵插入數組的那一點:即第一個大于此鍵的元素索引,如果數組中的所有元素都小于指定的鍵,則為 a.length。注意,這保證了當且僅當此鍵被找到時,返回的值將 >= 0。
?
binarySearch
public static int
binarySearch (T[]?a,int?fromIndex,int?toIndex,T?key)
使用二分搜索法來搜索指定的 byte 型數組的范圍,以獲得指定的值。必須在進行此調用之前對范圍進行排序(通過 sort(T[], int, int) 方法)。如果沒有對范圍進行排序,則結果是不確定的。如果范圍包含多個帶有指定值的元素,則無法保證找到的是哪一個。?
參數: a - 要搜索的數組 fromIndex - 要搜索的第一個元素的索引(包括) toIndex - 要搜索的最后一個元素的索引(不包括) key - 要搜索的值 返回: 如果它包含在數組的指定范圍內,則返回搜索鍵的索引;否則返回 (-(插入點) - 1)。插入點 被定義為將鍵插入數組的那一點:即范圍中第一個大于此鍵的元素索引,如果范圍中的所有元素都小于指定的鍵,則為 toIndex。注意,這保證了當且僅當此鍵被找到時,返回的值將 >= 0。 拋出: IllegalArgumentException - 如果 fromIndex > toIndex ArrayIndexOutOfBoundsException - 如果 fromIndex < 0 或 toIndex > a.length 從以下版本開始: 1.6?
?
binarySearch
public static <T> int
binarySearch (T[]?a,int?fromIndex,int?toIndex,T?key,Comparator<? super T>?c)
使用二分搜索法來搜索指定數組的范圍,以獲得指定對象。在進行此調用之前,必須根據指定的比較器(通過 sort(T[], int, int, Comparator) 方法)對范圍進行升序排序。如果沒有對范圍進行排序,則結果是不確定的。如果范圍包含多個等于指定對象的元素,則無法保證找到的是哪一個。?
參數: a - 要搜索的數組 fromIndex - 要搜索的第一個元素的索引(包括) toIndex - 要搜索的最后一個元素的索引(不包括) key - 要搜索的值 c - 用來對數組進行排序的比較器。null 值指示應該使用元素的自然順序。 返回: 如果它包含在數組的指定范圍內,則返回搜索鍵的索引;否則返回 (-(插入點) - 1)。插入點 被定義為將鍵插入數組的那一點:即范圍中第一個大于此鍵的元素索引,如果范圍中的所有元素都小于指定的鍵,則為 toIndex。注意,這保證了當且僅當此鍵被找到時,返回的值將 >= 0。 拋出: ClassCastException - 如果范圍包含使用指定的比較器不可相互比較 的元素,或者使用此比較器無法相互比較搜索鍵與范圍中的元素。 IllegalArgumentException - 如果 fromIndex > toIndex ArrayIndexOutOfBoundsException - 如果 fromIndex < 0 或 toIndex > a.length 從以下版本開始: 1.6?
copyOf
public static T[]
copyOf (T[]?original,int?newLength)
復制指定的數組,截取或用 默認值 填充(如有必要),以使副本具有指定的長度。對于在原數組和副本中都有效的所有索引,這兩個數組將包含相同的值。對于在副本中有效而在原數組無效的所有索引,副本將包含?默認值?。當且僅當指定長度大于原數組的長度時,這些索引存在。?
參數: original - 要復制的數組 newLength - 要返回的副本的長度 返回: 原數組的副本,截取或用 默認值??元素填充以獲得指定的長度 拋出: NegativeArraySizeException - 如果 newLength 為負 NullPointerException - 如果 original 為 null 從以下版本開始: 1.6?
copyOf
public static <T,U> T[]
copyOf (U[]?original,int?newLength,Class<? extends T[]>?newType)
復制指定的數組,截取或用 null 填充(如有必要),以使副本具有指定的長度。對于在原數組和副本中都有效的所有索引,這兩個數組將包含相同的值。對于在副本中有效而在原數組無效的所有索引,副本將包含 null。當且僅當指定長度大于原數組的長度時,這些索引存在。所得數組屬于 newType 類。?
參數: original - 要復制的數組 newLength - 要返回的副本的長度 newType - 要返回的副本的類 返回: 原數組的副本,截取或用 null 填充以獲得指定的長度 拋出: NegativeArraySizeException - 如果 newLength 為負 NullPointerException - 如果 original 為 null ArrayStoreException - 如果從 original 中復制的元素不屬于存儲在 newType 類數組中的運行時類型 從以下版本開始: 1.6?
copyOfRange
public static T[]
copyOfRange (T[]?original,int?from,int?to)
將指定數組的指定范圍復制到一個新數組。該范圍的初始索引 (from) 必須位于 0 和 original.length(包括)之間。original[from] 處的值放入副本的初始元素中(除非 from == original.length 或 from == to)。原數組中后續元素的值放入副本的后續元素。該范圍的最后索引 (to) (必須大于等于 from)可以大于 original.length,在這種情況下,(T)默認值 被放入索引大于等于 original.length - from 的副本的所有元素中。返回數組的長度為 to - from。?
參數: original - 將要從其復制一個范圍的數組 from - 要復制的范圍的初始索引(包括) to - 要復制的范圍的最后索引(不包括)。(此索引可以位于數組范圍之外)。 返回: 包含取自原數組指定范圍的新數組,截取或用 0 填充以獲得所需長度 拋出: ArrayIndexOutOfBoundsException - 如果 from < 0 或 from > original.length() IllegalArgumentException - 如果 from > to NullPointerException - 如果 original 為 null 從以下版本開始: 1.6?
copyOfRange
public static <T,U> T[]
copyOfRange (U[]?original,int?from,int?to,Class<? extends T[]>?newType)
將指定數組的指定范圍復制到一個新數組。該范圍的初始索引 (from) 必須位于 0 和 original.length(包括)之間。original[from] 處的值放入副本的初始元素中(除非 from == original.length 或 from == to)。原數組中后續元素的值放入副本的后續元素。該范圍的最后索引 (to) (必須大于等于 from)可以大于 original.length,在這種情況下,null 被放入索引大于等于 original.length - from 的副本的所有元素中。返回數組的長度為 to - from。所得數組屬于 newType 類。?
參數: original - 將要從其復制一個范圍的數組 from - 要復制的范圍的初始索引(包括) to - 要復制的范圍的最后索引(不包括)。(此索引可以位于數組范圍之外)。 newType - 要返回的副本的類 返回: 包含取自原數組指定范圍的新數組,截取或用 null 填充以獲得所需長度 拋出: ArrayIndexOutOfBoundsException - 如果 from < 0 或 from > original.length() IllegalArgumentException - 如果 from > to NullPointerException - 如果 original 為 null ArrayStoreException - 如果從 original 復制的元素不屬于可以存儲在 newType 類數組中的運行時類型。 從以下版本開始: 1.6?
deepEquals
public static boolean
deepEquals (Object[]?a1,Object[]?a2)
如果兩個指定數組彼此是深層相等 的,則返回 true。與 equals(Object[],Object[]) 方法不同,此方法適用于任意深度的嵌套數組。如果兩個數組引用均為 null,或者它們引用了包含相同元素數量的數組,并且兩個數組中的所有相應元素對都是深層相等的,則認為這兩個數組引用是深層相等的。
如果滿足以下任意條件之一,則兩個 null 元素 e1 和 e2 可能是深層相等的:
e1 和 e2 都是對象引用類型的數組,并且 Arrays.deepEquals(e1, e2) 將返回 true。 e1 和 e2 都是相同基本類型的數組,并且 Arrays.equals(e1, e2) 的適當重載將返回 true。 e1 == e2 e1.equals(e2) 將返回 true。 注意,此定義支持任意深度的 null 元素。如果指定數組中的任意一個數組,直接或間接通過一個或多個數組級別,包含數組本身作為其元素,則此方法的行為是不確定的。
?
參數: a1 - 將測試其相等性的一個數組 a2 - 將測試其相等性的另一個數組 返回: 如果兩個數組相等,則返回 true 從以下版本開始: 1.5 另請參見: equals(Object[],Object[])
deepHashCode
public static int
deepHashCode (Object[]?a)
基于指定數組的“深層內容”返回哈希碼。如果數組包含作為元素的其他數組,則哈希碼將基于其內容,并以此類推,直至無窮。所以,在將自身包含為一個元素的數組上,直接或間接通過一個或多個數組級別來調用此方法是不可接受的。這種調用的行為是不確定的。對于任何兩個滿足 Arrays.deepEquals(a, b) 的數組 a 和 b,也可以說 Arrays.deepHashCode(a) == Arrays.deepHashCode(b)。
對此方法返回值的計算類似于對列表上的 List.hashCode() 返回值的計算,該列表以相同的順序包含與 a 數組相同的元素,但有一點不同:如果數組 a 的 e 元素本身是一個數組,則不能通過調用 e.hashCode() 計算其哈希碼,但是,如果 e 是一個基本類型數組,則可以通過調用 Arrays.hashCode(e) 的適當重載來計算其哈希碼,或者,如果 e 是一個引用類型數組,則可以通過遞歸調用 Arrays.deepHashCode(e) 來計算其哈希碼。如果 a 為 null,則此方法返回 0。
?
參數: a - 將計算其基于深層內容的哈希碼的數組 返回: a 數組基于深層內容的哈希碼 從以下版本開始: 1.5 另請參見: hashCode(Object[])
deepToString
public static String
deepToString (Object[]?a)
返回指定數組“深層內容”的字符串表示形式。如果數組包含作為元素的其他數組,則字符串表示形式包含其內容等。此方法是為了將多維數組轉換為字符串而設計的。字符串表示形式由數組的元素列表組成,括在方括號("[]")中。相鄰元素用字符 ", "(逗號加空格)分隔。這些元素通過 String.valueOf(Object) 轉換為字符串,除非它們是自身的數組。
如果元素 e 是一個基本類型的數組,則通過調用 Arrays.toString(e) 的適當重載將它轉換為字符串。如果元素 e 是一個引用類型的數組,則通過遞歸調用此方法將它轉換為字符串。
為了避免無限遞歸,如果指定數組包含本身作為其元素,或者包含通過一個或多個數組級別對其自身的間接引用,則將自引用轉換為字符串 "[...]"。例如,只包含對自身進行引用的數組將呈現為 "[[...]]"。
如果指定數組為 null,則此方法返回 "null"。
?
參數: a - 返回其字符串表示形式的數組 返回: a 的字符串表示形式 從以下版本開始: 1.5
equals
public static boolean
equals (T[]?a,T[]?a2)
如果兩個指定的 T 數組彼此相等,則返回 true。如果兩個數組包含相同數量的元素,并且兩個數組中的所有相應元素對都是相等的,則認為這兩個數組是相等的。如果 (e1==null ? e2==null : e1.equals(e2)),則認為 e1 和 e2 這兩個對象是相等的 。換句話說,如果兩個數組以相同順序包含相同的元素,則兩個數組是相等的。此外,如果兩個數組引用都為 null,則認為它們是相等的。?
參數: a - 將測試其相等性的一個數組 a2 - 將測試其相等性的另一個數組 返回: 如果兩個數組相等,則返回 true
?
fill
public static void
fill (T[]?a,int?fromIndex,int?toIndex,T?val)
將指定的 T 值分配給指定 T 型數組指定范圍中的每個元素。填充的范圍從索引 fromIndex(包括)一直到索引 toIndex(不包括)。(如果 fromIndex==toIndex,則填充范圍為空。)?
參數: a - 要填充的數組 fromIndex - 要使用指定值填充的第一個元素的索引(包括) toIndex - 要使用指定值填充的最后一個元素的索引(不包括) val - 要存儲在數組所有元素中的值 拋出: IllegalArgumentException - 如果 fromIndex > toIndex ArrayIndexOutOfBoundsException - 如果 fromIndex < 0 或 toIndex > a.length
?
?
fill
public static void
fill (T[]?a,T?val)
將指定的 T 值分配給指定 T 型數組的每個元素。 參數: a - 要填充的數組 val - 要存儲在數組所有元素中的值
?
hashCode
public static int
hashCode (T[]?a)
基于指定數組的內容返回哈希碼。如果數組包含作為元素的其他數組,則哈希碼將基于其標識,而不是基于其內容。所以,在將自身包含為一個元素的數組上,直接或間接通過一個或多個數組級別來調用此方法是可接受的。對于任何兩個滿足 Arrays.equals(a, b) 的數組 a 和 b,也可以說 Arrays.hashCode(a) == Arrays.hashCode(b)。
此方法返回的值等于 Arrays.asList(a).hashCode() 返回的值,除非 a 為 null,在這種情況下返回 0。
?
參數: a - 將計算其基于內容的哈希碼的數組 返回: a 數組基于內容的哈希碼 從以下版本開始: 1.5 另請參見: deepHashCode(T[])
?
?
sort
public static void
sort (Object[]?a)
根據元素的自然順序對指定對象數組按升序進行排序。數組中的所有元素都必須實現 Comparable 接口。此外,數組中的所有元素都必須是可相互比較的(也就是說,對于數組中的任何 e1 和 e2 元素而言,e1.compareTo(e2) 不得拋出 ClassCastException)。保證此排序是穩定的:不會因調用 sort 方法而對相等的元素進行重新排序。
該排序算法是一個經過修改的合并排序算法(其中,如果低子列表中的最高元素小于高子列表中的最低元素,則忽略合并)。此算法提供可保證的 n*log(n) 性能。
?
參數: a - 要排序的數組 拋出: ClassCastException - 如果數組包含不可相互比較的 的元素(例如,字符串和整數)。
sort
public static void
sort (T[]?a,int?fromIndex,int?toIndex)
根據元素的自然順序對指定對象數組的指定范圍按升序進行排序。排序的范圍從索引 fromIndex(包括)一直到索引 toIndex(不包括)。(如果 fromIndex==toIndex,則排序范圍為空。)此范圍中的所有元素都必須實現 Comparable 接口。此外,此范圍中的所有元素都必須是可相互比較的(也就是說,對于數組中的任何 e1 和 e2 元素而言,e1.compareTo(e2) 不得拋出 ClassCastException)。保證此排序是穩定的:不會因調用 sort 方法而對相等的元素進行重新排序。
該排序算法是一個經過修改的合并排序算法(其中,如果低子列表中的最高元素小于高子列表中的最低元素,則忽略合并)。此算法提供可保證的 n*log(n) 性能。
?
參數: a - 要排序的數組 fromIndex - 要排序的第一個元素的索引(包括) toIndex - 要排序的最后一個元素的索引(不包括) 拋出: IllegalArgumentException - 如果 fromIndex > toIndex ArrayIndexOutOfBoundsException - 如果 fromIndex < 0 或 toIndex > a.length ClassCastException - 如果數組包含不可相互比較的 的元素(例如,字符串和整數)。
?
sort
public static <T> void
sort (T[]?a,Comparator<? super T>?c)
根據指定比較器產生的順序對指定對象數組進行排序。數組中的所有元素都必須是通過指定比較器可相互比較的(也就是說,對于數組中的任何 e1 和 e2 元素而言,c.compare(e1, e2) 不得拋出 ClassCastException)。保證此排序是穩定的:不會因調用 sort 方法而對相等的元素進行重新排序。
該排序算法是一個經過修改的合并排序算法(其中,如果低子列表中的最高元素小于高子列表中的最低元素,則忽略合并)。此算法提供可保證的 n*log(n) 性能。
?
參數: a - 要排序的數組 c - 確定數組順序的比較器。null 值指示應該使用元素的自然順序。 拋出: ClassCastException - 如果數組包含使用指定的比較器不可相互比較的 的元素。
?
?
sort
public static <T> void
sort (T[]?a,int?fromIndex,int?toIndex,Comparator<? super T>?c)
根據指定比較器產生的順序對指定對象數組的指定范圍進行排序。排序的范圍從索引 fromIndex(包括)一直到索引 toIndex(不包括)。(如果 fromIndex==toIndex,則排序范圍為空。)此范圍內的所有元素都必須是通過指定比較器可相互比較的(也就是說,對于該范圍中的任何 e1 和 e2 元素而言,c.compare(e1, e2) 不得拋出 ClassCastException)。保證此排序是穩定的:不會因調用 sort 方法而對相等的元素進行重新排序。
該排序算法是一個經過修改的合并排序算法(其中,如果低子列表中的最高元素小于高子列表中的最低元素,則忽略合并)。此算法提供可保證的 n*log(n) 性能。
?
參數: a - 要排序的數組 fromIndex - 要排序的第一個元素的索引(包括) toIndex - 要排序的最后一個元素的索引(不包括) c - 確定數組順序的比較器。null 值指示應該使用元素的自然順序。 拋出: ClassCastException - 如果數組包含使用指定的比較器不可相互比較的 的元素。 IllegalArgumentException - 如果 fromIndex > toIndex ArrayIndexOutOfBoundsException - 如果 fromIndex < 0 或 toIndex > a.length
?
?
toString
public static String
toString (T[]?a)
返回指定數組內容的字符串表示形式。如果數組包含作為元素的其他數組,則通過從 T 中繼承的 T.toString() 方法將它們轉換為字符串,這描述了它們的標識,而不是它們的內容。此方法返回的值等于 Arrays.asList(a).toString() 返回的值,除非 a 為 null,在這種情況下返回 "null"。
?
參數: a - 返回其字符串表示形式的數組 返回: a 的字符串表示形式 從以下版本開始: 1.5 另請參見: deepToString(T[])
總結
以上是生活随笔 為你收集整理的Util包中Arrays 的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網站內容還不錯,歡迎將生活随笔 推薦給好友。