java8新特性
- 行爲參數化:
- 函數式接口:只定義一個抽象方法的接口。能夠經過註解@FunctionalInterface標註。
- 函數描述符:函數式接口的抽象方法的簽名基本上就是Lambda表達式的簽名。
- 原始類型特化:
- 裝箱後的值本質上就是把原始類型包裹起來,並保存在堆裏。所以,裝箱後的值須要更多的內存,並須要額外的內存搜索來獲取被包裹的原始值。
- 方法引用:主要分爲3類
- 指向靜態方法的方法引用(例如 Integer 的 parseInt 方法,寫做 Integer::parseInt )。
- 指 向 任 意 類 型 實 例 方 法 的 方 法 引 用 ( 例 如 String 的 length 方 法 , 寫 做String::length )。
- 指向現有對象的實例方法的方法引用(假設你有一個局部變量 expensiveTransaction用於存放 Transaction 類型的對象,它支持實例方法 getValue ,那麼你就能夠寫 expensive-Transaction::getValue )。
- 迭代方式:stream使用內部迭代,collection使用外部迭代。
- 鏈接起來的流操做稱爲中間操做,關閉流的操做稱爲終端操做。
- stream數據篩選:filter(),distinct(),limit(),skip()。
- stream數據映射:map(),flatmap()。
- distinct() 根據流所生成元素的hashCode 和 equals 方法實現。
- 原始類型流特化, mapToInt(),mapToDouble(),mapToLong()。
- 獲取stream的其餘方式:Stream.of(), Stream.empty(), Arrays.stream()。
歡迎關注本站公眾號,獲取更多信息