JDK8 特性 持續更新
- 1、Lambda表達式【jdk8核心特性】
- 2、Stream
- 3、日期時間
- 4、Join() 字元串拼接
1、Lambda表達式【jdk8核心特性】
介紹:
Lambda 表達式,也可稱為閉包,它是推動 java 8 釋出的最重要新特性。
Lambda 允許把函數作為一個方法的參數(函數作為參數傳遞進方法中)。
使用 Lambda 表達式可以使代碼變的更加簡潔緊湊。
文法:
(parameters) -> expression
或
(parameters) ->{ statements; }
重要特征:
特性 | 說明 | 案例 |
---|---|---|
可選類型聲明 | 不需要聲明參數類型,編譯器可以統一識别參數值。 | x -> 2 * x |
可選的參數圓括号 | 一個參數無需定義圓括号,但多個參數需要定義圓括号。 | x -> 2 * x |
可選的大括号 | 如果主體包含了一個語句,就不需要使用大括号。 | (x, y) -> x – y |
可選的傳回關鍵字 | 如果主體隻有一個表達式傳回值則編譯器會自動傳回值,大括号需要指定明表達式傳回了一個數值。 | (String s) -> System.out.print(s) |
Lambda 表達式案例解釋說明:
// 1. 不需要參數,傳回值為 5
() -> 5
// 2. 接收一個參數(數字類型),傳回其2倍的值
x -> 2 * x
// 3. 接受2個參數(數字),并傳回他們的內插補點
(x, y) -> x – y
// 4. 接收2個int型整數,傳回他們的和
(int x, int y) -> x + y
// 5. 接受一個 string 對象,并在控制台列印,不傳回任何值(看起來像是傳回void)
(String s) -> System.out.print(s)
2、Stream
函數:
函數名 | 解釋 |
---|---|
.foreach() | 周遊循環 |
.collect(Collectors) | 轉換為其他形式 ,例如:list.stream().collect(Collectors.toList()); |
.filter( ) | 篩選,過濾特定資料 |
.sorted() | 排序,預設升序、sorted(Comparator.comparing(對象::屬性))降序 |
.map(Function f)) | 接收流中元素,并且将其映射成為新元素,例如:使用前【admin,zs,ww】list.Stream.map(e -> e.getName() + “531”) 使用後: 【admin531,zs531,ww531】 |
.limit(long n) | 斷截流,取前n個元素 |
.count | 傳回總數 |
.mapToDouble(對象::屬性) | 将對象中的某一個屬性轉為Double類型 |
.sum() | 求和 |
`2.1 Collectors配套方法:
函數名 | 解釋 |
---|---|
.toListA() | 将流轉為List集合 |
.toSet() | 将流轉為Set集合 |
.toMap() | 将流轉為Map集合 |
.groupingBy(對象::屬性) | 根據對象中的某個資料分組 |
3、日期時間
java.time包
apl | 解釋 |
---|---|
Local(本地) | 簡化了日期時間的處理,沒有時區的問題。LocalDateTime currentTime = LocalDateTime.now(); |
Zoned(時區) | 通過制定的時區處理日期時間。 |
4、Join() 字元串拼接
String.Join(‘分割符’,數組)
意為指定拼接數組字元的連接配接符号
//案例:
List<Object> list = new ArrList<Object>();
list.add("zs");
list.add("ls");
list.add("ww");
String join = String.Join('-',list)
System.out.println(join);
//結果:zs-ls-ww