Java7與Java8中的HashMap
- JDK7 HashMap結構為數組+連結清單(發生元素碰撞時,會将新元素添加到連結清單開頭)
- JDK8 HashMap結構為數組+連結清單+紅黑樹(發生元素碰撞時,會将新元素添加到連結清單末尾,當HashMap總容量大于等于64,并且某個連結清單的大小大于等于8,會将連結清單轉化為紅黑樹(注意:紅黑樹是二叉樹的一種))
JDK8 HashMap重排序
如果删除了HashMap中紅黑樹的某個元素導緻元素重排序時,不需要計算待重排序的元素的HashCode碼,隻需要将目前元素放到(HashMap總長度+目前元素在HashMap中的位置)的位置即可。
篩選與切片
- filter——接收 Lambda , 從流中排除某些元素。
- limit——截斷流,使其元素不超過給定數量。
- skip(n) —— 跳過元素,傳回一個扔掉了前 n 個元素的流。若流中元素不足 n 個,則傳回一個空流。與 limit(n) 互補
- distinct——篩選,通過流所生成元素的 hashCode() 和 equals() 去除重複元素
中間操作
- map——接收 Lambda , 将元素轉換成其他形式或提取資訊。接收一個函數作為參數,該函數會被應用到每個元素上,并将其映射成一個新的元素。
- flatMap——接收一個函數作為參數,将流中的每個值都換成另一個流,然後把所有流連接配接成一個流
- sorted()——自然排序
- sorted(Comparator com)——定制排序
終止操作
- allMatch——檢查是否比對所有元素
- anyMatch——檢查是否至少比對一個元素
- noneMatch——檢查是否沒有比對的元素
- findFirst——傳回第一個元素
- findAny——傳回目前流中的任意元素
- count——傳回流中元素的總個數
- max——傳回流中最大值
- min——傳回流中最小值
歸約
- reduce(T identity, BinaryOperator) / reduce(BinaryOperator) ——可以将流中元素反複結合起來,得到一個值。
- collect——将流轉換為其他形式。接收一個 Collector接口的實作,用于給Stream中元素做彙總的方法
注意:流進行了終止操作後,不能再次使用
Optional 容器類
用于盡量避免空指針異常
- Optional.of(T t) : 建立一個 Optional 執行個體
- Optional.empty() : 建立一個空的 Optional 執行個體
- Optional.ofNullable(T t):若 t 不為 null,建立 Optional 執行個體,否則建立空執行個體
- isPresent() : 判斷是否包含值
- orElse(T t) : 如果調用對象包含值,傳回該值,否則傳回t
- orElseGet(Supplier s) :如果調用對象包含值,傳回該值,否則傳回 s 擷取的值
- map(Function f): 如果有值對其處理,并傳回處理後的Optional,否則傳回 Optional.empty()
- flatMap(Function mapper):與 map 類似,要求傳回值必須是Optional