一、Stream流
Java8中新增了Stream API,它是一個用來處理數據集合的API。Stream API可以讓代碼更加簡潔易讀,並且提高了代碼運行的效率。Stream流提供了許多操作方法,比如對集合中的元素進行過濾、排序、分組等等。
下面是一個簡單的Stream流操作,用來過濾出集合中所有的偶數:
List numbers = Arrays.asList(1, 2, 3, 4, 5, 6); numbers.stream() .filter(n -> n % 2 == 0) .forEach(System.out::println);
上面的代碼中,先將集合轉化為一個Stream流,然後使用filter方法過濾掉不符合條件的元素,最後使用forEach方法對剩下的元素進行遍歷輸出。
二、Lambda表達式
Java8中引入了Lambda表達式,它是一種匿名函數,可以簡化函數式接口的實現方式。Lambda表達式使用箭頭符號 “->” 來連接參數和函數體。
下面是一個使用Lambda表達式的例子:
List numbers = Arrays.asList(1, 2, 3, 4, 5, 6); numbers.forEach((n) -> System.out.println(n));
上面的代碼中,forEach方法使用Lambda表達式來實現對每個元素的輸出。Lambda表達式簡化了代碼的書寫,使代碼更加易讀易懂。
三、Optional類
Java8中引入了Optional類,它用來解決NullPointerException異常的問題。Optional類可以將一個可能為空的對象包裝起來,如果該對象為空,就返回一個空的Optional對象,否則就返回一個包含該對象的Optional對象。
下面是一個使用Optional類的例子:
Optional name = Optional.of("John"); System.out.println(name.get());
上面的代碼中,使用Optional.of方法創建了一個Optional對象,然後使用get方法獲取Optional對象中的值。如果Optional對象為空,就會拋出NoSuchElementException異常。
四、接口中的默認方法和靜態方法
Java8中引入了接口中的默認方法和靜態方法。默認方法可以在不破壞原有接口的前提下為接口添加新的方法,而靜態方法則可以為接口提供一些通用的功能。
下面是一個使用默認方法的例子:
public interface MyInterface { default void sayHello() { System.out.println("Hello World"); } } public class MyClass implements MyInterface { // ... } public static void main(String[] args) { MyInterface obj = new MyClass(); obj.sayHello(); }
上面的代碼中,MyInterface接口中定義了一個默認方法sayHello,MyClass類實現了MyInterface接口,然後通過MyInterface類型的引用調用sayHello方法。此時,sayHello方法就會輸出”Hello World”。
五、函數式接口
Java8中引入了函數式接口,它是只有一個抽象方法的接口。函數式接口可以用來表示Lambda表達式和方法引用的目標類型。
下面是一個使用函數式接口的例子:
public interface MyFunctionalInterface { void sayHello(); } public class MyClass { public static void main(String[] args) { MyFunctionalInterface obj = () -> System.out.println("Hello World"); obj.sayHello(); } }
上面的代碼中,MyFunctionalInterface接口定義了一個抽象方法sayHello,然後在MyClass類中使用Lambda表達式實現了該接口,最後調用接口的sayHello方法輸出 “Hello World”。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/247364.html