建網(wǎng)站如何賺錢西安seo外包服務(wù)
全文目錄:
- 開(kāi)篇語(yǔ)
- Lambda 表達(dá)式的語(yǔ)法與使用:更簡(jiǎn)潔、更靈活的函數(shù)式編程
- 一、Lambda 表達(dá)式的語(yǔ)法
- 1.1 Lambda 表達(dá)式的基本語(yǔ)法形式
- 二、Lambda 表達(dá)式的使用
- 2.1 Lambda 表達(dá)式與匿名內(nèi)部類的對(duì)比
- 代碼示例:使用匿名內(nèi)部類和 Lambda 表達(dá)式實(shí)現(xiàn) `Runnable` 接口
- 2.2 Lambda 表達(dá)式與函數(shù)式接口
- 代碼示例:自定義函數(shù)式接口
- 三、常用的 Lambda 表達(dá)式場(chǎng)景
- 3.1 在集合框架中的使用
- 代碼示例:使用 Lambda 表達(dá)式遍歷集合
- 3.2 過(guò)濾與映射
- 代碼示例:使用 Lambda 表達(dá)式過(guò)濾與映射
- 3.3 排序操作
- 代碼示例:使用 Lambda 表達(dá)式排序
- 四、函數(shù)式編程與 Lambda 表達(dá)式
- 4.1 `Function` 接口
- 代碼示例:使用 `Function` 接口
- 4.2 `Predicate` 接口
- 代碼示例:使用 `Predicate` 接口
- 4.3 `Consumer` 接口
- 代碼示例:使用 `Consumer` 接口
- 五、總結(jié):Lambda 表達(dá)式的優(yōu)勢(shì)與應(yīng)用
- 文末
開(kāi)篇語(yǔ)
哈嘍,各位小伙伴們,你們好呀,我是喵手。運(yùn)營(yíng)社區(qū):C站/掘金/騰訊云/阿里云/華為云/51CTO;歡迎大家常來(lái)逛逛
??今天我要給大家分享一些自己日常學(xué)習(xí)到的一些知識(shí)點(diǎn),并以文字的形式跟大家一起交流,互相學(xué)習(xí),一個(gè)人雖可以走的更快,但一群人可以走的更遠(yuǎn)。
??我是一名后端開(kāi)發(fā)愛(ài)好者,工作日常接觸到最多的就是Java語(yǔ)言啦,所以我都盡量抽業(yè)余時(shí)間把自己所學(xué)到所會(huì)的,通過(guò)文章的形式進(jìn)行輸出,希望以這種方式幫助到更多的初學(xué)者或者想入門的小伙伴們,同時(shí)也能對(duì)自己的技術(shù)進(jìn)行沉淀,加以復(fù)盤(pán),查缺補(bǔ)漏。
小伙伴們?cè)谂喌倪^(guò)程中,如果覺(jué)得文章不錯(cuò),歡迎點(diǎn)贊、收藏、關(guān)注哦。三連即是對(duì)作者我寫(xiě)作道路上最好的鼓勵(lì)與支持!
Lambda 表達(dá)式的語(yǔ)法與使用:更簡(jiǎn)潔、更靈活的函數(shù)式編程
??Lambda 表達(dá)式是 Java 8 引入的一個(gè)強(qiáng)大特性,它使得 Java 更加簡(jiǎn)潔、靈活,尤其是在處理集合、事件和回調(diào)時(shí),能夠以更加函數(shù)式的方式表達(dá)代碼。Lambda 表達(dá)式的引入是 Java 語(yǔ)言的一次重大變革,它不僅讓代碼更加簡(jiǎn)潔,也增強(qiáng)了 Java 語(yǔ)言的表達(dá)力和可維護(hù)性。
一、Lambda 表達(dá)式的語(yǔ)法
Lambda 表達(dá)式的基本語(yǔ)法如下:
(parameters) -> expression
其中:
- parameters:表示傳遞給 Lambda 表達(dá)式的參數(shù),類似于方法的參數(shù)列表。
- ->:Lambda 操作符,用于將參數(shù)列表與方法體分隔開(kāi)。
- expression:Lambda 表達(dá)式的主體,表示 Lambda 執(zhí)行的代碼。它可以是單行的表達(dá)式,也可以是包含多行的代碼塊。
1.1 Lambda 表達(dá)式的基本語(yǔ)法形式
-
無(wú)參數(shù),返回值為空:
() -> System.out.println("Hello, World");
這表示一個(gè)沒(méi)有參數(shù)且執(zhí)行簡(jiǎn)單操作的 Lambda 表達(dá)式。
-
一個(gè)參數(shù),返回值:
x -> x * x
這是一個(gè)接受單個(gè)參數(shù)并返回其平方的 Lambda 表達(dá)式。
-
多個(gè)參數(shù):
(x, y) -> x + y
這是一個(gè)接受兩個(gè)參數(shù)并返回它們和的 Lambda 表達(dá)式。
-
包含代碼塊:
(x, y) -> {int sum = x + y;return sum; }
這是一個(gè)包含多行代碼的 Lambda 表達(dá)式,其中
return
用于返回結(jié)果。
二、Lambda 表達(dá)式的使用
Lambda 表達(dá)式可以應(yīng)用于任何需要函數(shù)式接口的場(chǎng)景,函數(shù)式接口是只包含一個(gè)抽象方法的接口。例如,Java 提供的 Runnable
、Callable
、Comparator
等接口都可以使用 Lambda 表達(dá)式來(lái)實(shí)現(xiàn)。
2.1 Lambda 表達(dá)式與匿名內(nèi)部類的對(duì)比
在 Java 中,Lambda 表達(dá)式常常用來(lái)替代匿名內(nèi)部類,尤其是在實(shí)現(xiàn)接口時(shí)。與匿名內(nèi)部類相比,Lambda 表達(dá)式更加簡(jiǎn)潔。
代碼示例:使用匿名內(nèi)部類和 Lambda 表達(dá)式實(shí)現(xiàn) Runnable
接口
匿名內(nèi)部類實(shí)現(xiàn):
public class RunnableExample {public static void main(String[] args) {Runnable runnable = new Runnable() {@Overridepublic void run() {System.out.println("Hello from anonymous class");}};new Thread(runnable).start();}
}
Lambda 表達(dá)式實(shí)現(xiàn):
public class RunnableExample {public static void main(String[] args) {Runnable runnable = () -> System.out.println("Hello from Lambda");new Thread(runnable).start();}
}
??在這個(gè)例子中,使用 Lambda 表達(dá)式代替匿名內(nèi)部類,使得代碼更加簡(jiǎn)潔。
2.2 Lambda 表達(dá)式與函數(shù)式接口
Lambda 表達(dá)式的目標(biāo)是函數(shù)式接口。一個(gè)接口如果只包含一個(gè)抽象方法,就稱為函數(shù)式接口。例如,Runnable
、Callable
和 Comparator
都是函數(shù)式接口。
代碼示例:自定義函數(shù)式接口
@FunctionalInterface
interface Calculator {int add(int a, int b);
}public class LambdaExample {public static void main(String[] args) {// 使用 Lambda 表達(dá)式實(shí)現(xiàn)函數(shù)式接口Calculator calculator = (a, b) -> a + b;System.out.println("Sum: " + calculator.add(5, 3));}
}
??在這個(gè)例子中,我們定義了一個(gè) Calculator
函數(shù)式接口,它有一個(gè) add
方法。然后,我們使用 Lambda 表達(dá)式來(lái)實(shí)現(xiàn) add
方法。
三、常用的 Lambda 表達(dá)式場(chǎng)景
3.1 在集合框架中的使用
Lambda 表達(dá)式特別適用于集合框架(如 List
、Set
、Map
)的操作,常見(jiàn)的操作包括遍歷、過(guò)濾、排序等。Java 8 引入的 Stream API 使得對(duì)集合的操作更加直觀。
代碼示例:使用 Lambda 表達(dá)式遍歷集合
import java.util.Arrays;
import java.util.List;public class LambdaForEachExample {public static void main(String[] args) {List<String> list = Arrays.asList("Apple", "Banana", "Cherry");// 使用 Lambda 表達(dá)式遍歷集合list.forEach(item -> System.out.println(item));}
}
??在這個(gè)例子中,我們使用 forEach
方法和 Lambda 表達(dá)式遍歷列表,并打印每個(gè)元素。
3.2 過(guò)濾與映射
通過(guò) Stream
API,Lambda 表達(dá)式還可以用于對(duì)集合元素的過(guò)濾、映射和聚合操作。
代碼示例:使用 Lambda 表達(dá)式過(guò)濾與映射
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;public class LambdaFilterMapExample {public static void main(String[] args) {List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);// 使用 Lambda 表達(dá)式過(guò)濾偶數(shù),并將每個(gè)數(shù)乘以 2List<Integer> result = numbers.stream().filter(n -> n % 2 == 0).map(n -> n * 2).collect(Collectors.toList());System.out.println(result); // 輸出:[4, 8, 12]}
}
??在這個(gè)例子中,我們使用 filter()
方法來(lái)過(guò)濾偶數(shù),使用 map()
方法將每個(gè)數(shù)乘以 2,然后通過(guò) collect()
方法將結(jié)果轉(zhuǎn)換成一個(gè)新的列表。
3.3 排序操作
Lambda 表達(dá)式還可以與 Comparator
一起使用,簡(jiǎn)化排序操作。
代碼示例:使用 Lambda 表達(dá)式排序
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;public class LambdaSortExample {public static void main(String[] args) {List<String> list = Arrays.asList("Banana", "Apple", "Cherry");// 使用 Lambda 表達(dá)式進(jìn)行排序list.sort((a, b) -> a.compareTo(b)); // 升序排序System.out.println(list); // 輸出:[Apple, Banana, Cherry]}
}
??在這個(gè)例子中,我們使用 sort()
方法和 Lambda 表達(dá)式來(lái)對(duì)字符串列表進(jìn)行排序。
四、函數(shù)式編程與 Lambda 表達(dá)式
Lambda 表達(dá)式是 Java 函數(shù)式編程的核心,允許我們將函數(shù)作為參數(shù)傳遞并返回。Java 8 的 Function
、Predicate
、Consumer
和 Supplier
等接口是函數(shù)式編程的關(guān)鍵組成部分。
4.1 Function
接口
Function
接口代表接受一個(gè)參數(shù)并返回一個(gè)結(jié)果的函數(shù)。
代碼示例:使用 Function
接口
import java.util.function.Function;public class FunctionExample {public static void main(String[] args) {Function<String, Integer> stringLength = str -> str.length();System.out.println(stringLength.apply("Hello")); // 輸出:5}
}
4.2 Predicate
接口
Predicate
接口用于判斷某個(gè)條件是否成立。
代碼示例:使用 Predicate
接口
import java.util.function.Predicate;public class PredicateExample {public static void main(String[] args) {Predicate<Integer> isEven = n -> n % 2 == 0;System.out.println(isEven.test(4)); // 輸出:true}
}
4.3 Consumer
接口
Consumer
接口表示接受一個(gè)參數(shù)并執(zhí)行某些操作,但不返回結(jié)果。
代碼示例:使用 Consumer
接口
import java.util.function.Consumer;public class ConsumerExample {public static void main(String[] args) {Consumer<String> print = str -> System.out.println(str);print.accept("Hello, World!"); // 輸出:Hello, World!}
}
五、總結(jié):Lambda 表達(dá)式的優(yōu)勢(shì)與應(yīng)用
Lambda 表達(dá)式使 Java 的代碼更加簡(jiǎn)潔、清晰和函數(shù)式。通過(guò) Lambda 表達(dá)式,我們能夠:
- 簡(jiǎn)化匿名內(nèi)部類的使用,特別是在實(shí)現(xiàn)函數(shù)式接口時(shí)。
- 與 Stream API 一起,使得對(duì)集合的操作(如過(guò)濾、映射、排序等)更加簡(jiǎn)潔和高效。
- 提高代碼的可讀性和可維護(hù)性。
Lambda 表達(dá)式在 Java 8 中的引入是 Java 語(yǔ)言的一次重大改進(jìn),它使得 Java 更加符合現(xiàn)代編程范式,尤其是在處理集合和事件時(shí),能夠提供更簡(jiǎn)潔、直觀的表達(dá)方式。
… …
文末
好啦,以上就是我這期的全部?jī)?nèi)容,如果有任何疑問(wèn),歡迎下方留言哦,咱們下期見(jiàn)。
… …
學(xué)習(xí)不分先后,知識(shí)不分多少;事無(wú)巨細(xì),當(dāng)以虛心求教;三人行,必有我?guī)熝?#xff01;!!
wished for you successed !!!
??若喜歡我,就請(qǐng)關(guān)注我叭。
??若對(duì)您有用,就請(qǐng)點(diǎn)贊叭。
??若有疑問(wèn),就請(qǐng)?jiān)u論留言告訴我叭。
版權(quán)聲明:本文由作者原創(chuàng),轉(zhuǎn)載請(qǐng)注明出處,謝謝支持!