elasticsearch入門系列">elasticsearch入門系列
680
2025-04-01
不知道自己無知,乃是雙倍的無知。
——柏拉圖
0 前言
此類包含用于操縱數組的各種方法(例如排序和搜索)。 此類還包含一個靜態工廠,該工廠允許將數組視為列表。
如果指定的數組引用為null,則除非另有說明,否則此類中的方法都拋出NullPointerException。
此類中所包含方法的文檔包括對實現的簡要說明。 此類描述應被視為實現的說明,而不是標準。只要遵守規范本身,實現者就可以隨意替換其他算法.(例如sort(Object[] 使用的算法不必是MergeSort,但必須是穩定的。)
此類是Java Collections Framework的成員。在 JDK1.2 時提供.
1 繼承體系
正如你所見,此類不繼承,不實現任何接口或者類.開箱即用.
2 構造方法
private 修飾,這意味著Arrays類不能被實例化
3 屬性
最小數組長度,低于該最小數組長度,并行排序算法將不會進一步劃分排序任務。 使用較小的大小通常會導致跨任務的內存爭用,從而導致并行加速的可能性不大
調整參數:列表大小等于或小于該列表大小的插入排序優先于 mergesort。在將來的 JDK 版本中會被刪除。
4 復制
4.1 Arrays#copyOf
復制指定的數組,截斷或填充零(如果需要),以使副本具有指定的長度。
對于在原始數組和副本中均有效的所有索引,兩個數組將包含相同的值
對于在副本中有效但在原始副本中無效的任何索引,副本將包含0
只有當指定長度大于原始數組的長度時,此類索引才會存在
從源碼中可以看到 Arrays 的拷貝方法,實際上最終調用的還是 System.arraycopy 這個本地方法。
4.2 System#copyOf
從指定的源數組(從指定位置開始)復制數組到目標數組的指定位置。數組元素的子序列從src引用的源數組復制到dest引用的目標數組。復制的元素數等于length參數。將源數組中?srcPos?到?srcPos+length-1?位置的分量分別復制到目標數組的?destPos?到?destPos+length-1?位置
如果src和dest參數引用相同的數組對象,則執行復制,就好像首先將srcPos到?srcPos+length-1?位置上的元素復制到具有 length 個元素的臨時數組,然后將臨時數組的內容通過目標數組的?destPos+length-1?復制到位置destPos。
如果dest為null,則拋出NullPointerException。
如果src為null,則拋出NullPointerException,并且不修改目標數組。
如果滿足以下任一條件,則將引發ArrayStoreException并且不會修改目標:
src參數引用的對象不是數組
dest參數引用的對象不是數組。
src參數和dest參數引用其元素類型為不同基本類型的數組。
src參數引用具有原始元素類型的數組,而dest參數引用具有引用元素類型的數組
src參數引用具有引用元素類型的數組,而dest參數引用具有原始元素類型的數組
如果滿足以下任一條件,則將拋出IndexOutOfBoundsException,并且不會修改目標:
srcPos參數為負。
destPos參數為負。
length參數為負
srcPos + length大于源數組的長度src.length
destPos + length大于目標數組的長度dest.length
5 toString
數組打印
即通過 StringBuilder將數組內容拼接打印出來。
注意此處的Arrays.toString()方法是Arrays類自己定義實現的靜態方法,而不是Object的toString()方法。
6 equals
數組相同判斷
就是對數組中對應元素分別進行比較是否相同
示例:注意與 Objects中的equals方法不同
7 asList
將數組轉為List,該方法與集合的toArray方法一起充當了構建數組和集合之間的橋梁.
該方法還提供了一種很便捷的方法來創建一個初始化大小的列表,該列表初始化包含幾個元素:
注意,此處返回的 ArrayList 并非常用的 java.util.ArrayList,而是 Arrays 的一個靜態內部類
該內部類中沒有add和remove方法,不支持添加和移除等操作。
8 hashCode
獲取數組的hashCode值,該值是基于數組的每一個元素的hashCode來實現的。一般來說,hashCode方法只計算到數組的第一層,如果數組中還內嵌數組,deepHashCode方法則會一直遞歸調用到數組無法再拆分為止。
9 總結
Arrays 是 JDK 專為方便操作數組提供的工具類.大家務必搞懂,如果有任何疑惑及感想,歡迎評論區留言!
Java JDK 數據結構
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。