Java集合類中工具類

Java集合工具類

0.源碼下載

此處我們使用openJDK源碼,下載網址是http://hg.openjdk.java.net/

老司機帶路教程:https://adoptopenjdk.gitbooks.io/adoptopenjdk-getting-started-kit/en/

1.關鍵字理解

static和final

方法和變量被static和final修飾,

保證方法和變量不需要初始化就可以使用,變量不可修改、方法不可被覆寫,保證了方法內部穩定性。

try、catch、finally

try {
    System.out.println("start");
    throw new Exception("111");
} catch (Exception e) {
    e.printStackTrace();
    System.out.println("222");
    throw new Exception("444");
} finally {
    System.out.println("333");
}

執行順序是 1234 當catch中發生異常時會在finally執行完畢後拋出異常。

default 關鍵字

用於接口方法簽名前,給接口方法提供默認實現。

volatile關鍵字

確保了修改可見性

在這裏插入圖片描述

2.集合類常見方法

工具類要點:

(1)構造器私有,工具類使用時無需構造對象。

(2)方法被staticl修飾,保證方法可直接使用,final修飾常量,保證不可變性。

(3)當要對共享變量做修改時,需要加鎖處理線程安全問題。

(4)內部輔助類使用靜態內部類。

Arrays 工具類

面向數組使用,主要包含以下方法:

Arrays
--sort 對數組進行排序,底層是DualPivotQuicksort雙軸快排。
--parallelSort 並行排序,但只有超大數組纔會使用並行處理。
--parallelPrefix 計算累計值,[2,1,2,5]->[2,3,5,7,12]
--spliterator
--binarySearch 二分搜索
--equals 判斷兩個數組是否相等,判空,判長,判定元素。
--fill 使用指定值填充數組,一個for循環搞定。
--copyOf 拷貝數組 底層使用native方法
--asList 將數組轉換爲List
--hashCode 生成數組的哈希值
--toString 將數組轉換爲字符串
--stream 將數組轉換爲流

其中並行排序的原理是判斷數組大小,小於閥值1 << 13 = 8192或者並行級別爲1,則走雙軸快排;否則走並行排序。

Collections 工具類

面向集合類使用,

Collections
--sort 使用的是List自身的sort方法
--binarySearch 二分查找,底層有基於索引的二分查找和基於迭代器的二分查找
--reverse 反轉list
--swap 替換元素
--fill 使用指定元素填充列表
--copy 複製列表
--max 返回最大值
--min 返回最小值
--synchronizedList 創建各種同步集合類,內部操作都是加了synchronized關鍵字
--unmodifiableList 創建不可修改的集合類

如下泛型規定了必須要實現的接口以及繼承的類型

<T extends Object & Comparable<? super T>> T

Objects 工具類

Objects中的方法少了很多,主要有equals、hashCode、hash 等。

``

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章