国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Lambda表達式:簡介、語法和用法

這篇具有很好參考價值的文章主要介紹了Lambda表達式:簡介、語法和用法。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

Lambda表達式:簡介、語法和用法

Lambda表達式是Java 8中引入的一個重要特性,它允許開發(fā)者以更加簡潔的方式編寫函數(shù)式代碼。在本文中,我們將深入探討Lambda表達式的概念、語法和用法,并為每個實例提供代碼演示,同時對比與傳統(tǒng)方法的區(qū)別和優(yōu)勢。

1. Lambda表達式概述

Lambda表達式是一種匿名函數(shù),它主要用于表示簡單的行為或代碼塊,并可以在需要時傳遞到其他函數(shù)中。Lambda表達式可以看作是一個函數(shù)式接口的實例,它由三個部分組成:參數(shù)列表、箭頭符號和表達式體。以下是一個簡單的Lambda表達式示例:

() -> System.out.println("Hello, World!");

在這個示例中,Lambda表達式包含一個空參數(shù)列表,箭頭符號"->"和一個輸出"Hello, World!"的表達式體。它可以通過調(diào)用Lambda表達式的函數(shù)式接口來執(zhí)行。

2. Lambda表達式語法

Lambda表達式的語法非常簡單,它由三個部分組成:參數(shù)列表、箭頭符號和表達式體。以下是Lambda表達式的語法:

(parameters) -> expression

或者

(parameters) -> { statements; }

其中,參數(shù)列表可以是空的、包含一個參數(shù)或包含多個參數(shù)。如果有多個參數(shù),則需要使用逗號分隔參數(shù)。表達式體可以是一個簡單的表達式,也可以是一個代碼塊。

當使用Java語言時,Lambda表達式也由三個關(guān)鍵部分組成:

參數(shù)列表:指定Lambda函數(shù)接受的參數(shù)。參數(shù)可以有零到多個,用逗號隔開,放在小括號中。

箭頭符號:箭頭符號“->”用于分隔參數(shù)列表和表達式體。它表示將給定的參數(shù)映射到表達式體中進行計算。

表達式體:指定Lambda函數(shù)執(zhí)行的代碼塊,可以是任何有效的表達式或語句塊。

下面是一個簡單的示例,展示了一個使用Lambda表達式來對字符串數(shù)組進行排序的例子:

// 對字符串數(shù)組進行排序
String[] myArray = {"hello", "world", "lambda", "expression"};

// 使用Lambda表達式定義排序規(guī)則
Arrays.sort(myArray, (String str1, String str2) -> str1.compareTo(str2));

// 輸出排序后的結(jié)果
System.out.println(Arrays.toString(myArray));

在這個例子中,Lambda表達式被用作Comparator的實現(xiàn)傳遞給Arrays.sort方法。Lambda表達式(String str1, String str2) -> str1.compareTo(str2)指定了排序規(guī)則,它接受兩個參數(shù)str1和str2,并返回它們比較的結(jié)果。這意味著該字符串數(shù)組將按字母序進行排序。

需要注意的是,Lambda表達式需要使用函數(shù)式接口來實現(xiàn)。函數(shù)式接口是一個只有一個抽象方法的接口,它可以被Lambda表達式實現(xiàn)。Java 8提供了許多內(nèi)置的函數(shù)式接口,例如Comparator、RunnableFunction等。

3. Lambda表達式用法

Lambda表達式的主要用途是作為函數(shù)式接口的

提供了一些demo;

1.遍歷列表并輸出每個元素

List<String> list = Arrays.asList("apple", "banana", "orange");

// 使用Lambda遍歷列表
list.forEach(item -> System.out.println(item));

// 常規(guī)寫法
for (String item : list) {
    System.out.println(item);
}

2.篩選列表中的偶數(shù)并返回一個新列表

List list = Arrays.asList(1, 2, 3, 4, 5, 6);

// 使用Lambda篩選偶數(shù)

List<Integer> evenList = list.stream().filter(num -> num % 2 == 0).collect(Collectors.toList());
System.out.println(evenList);

// 常規(guī)寫法
List<Integer> evenList2 = new ArrayList<>();
for (Integer num : list) {
    if (num % 2 == 0) {
        evenList2.add(num);
    }
}
System.out.println(evenList2);

3.將字符串轉(zhuǎn)換為大寫并返回一個新列表

List<String> list = Arrays.asList("apple", "banana", "orange");

// 使用Lambda將字符串轉(zhuǎn)換為大寫


List<String> upperList = list.stream().map(str -> str.toUpperCase()).collect(Collectors.toList());
System.out.println(upperList);

// 常規(guī)寫法
List<String> upperList2 = new ArrayList<>();
for (String str : list) {
    upperList2.add(str.toUpperCase());
}
System.out.println(upperList2);

4.計算列表中所有元素的總和

List<Integer> list = Arrays.asList(1, 2, 3, 4, 5);

// 使用Lambda計算列表元素總和
int sum = list.stream().reduce(0, (a, b) -> a + b);
System.out.println(sum);

// 常規(guī)寫法
int sum2 = 0;
for (Integer num : list) {
    sum2 += num;
}
System.out.println(sum2);

5.將列表中的元素轉(zhuǎn)換為鍵值對并放入Map中

List<String> list = Arrays.asList("apple", "banana", "orange");

// 使用Lambda將列表中的元素轉(zhuǎn)換為鍵值對并放入Map中
Map<String, Integer> map = list.stream().collect(Collectors.toMap(Function.identity(), String::length));
System.out.println(map);

// 常規(guī)寫法
Map<String, Integer> map2 = new HashMap<>();
for (String str : list) {
    map2.put(str, str.length());
}
System.out.println(map2);

6. 篩選集合中的元素

// 使用Lambda表達式篩選出小于10的數(shù)字
List<Integer> numbers = Arrays.asList(1, 5, 10, 15);
List<Integer> filteredNumbers = numbers.stream()
                                        .filter(n -> n < 10)
                                        .collect(Collectors.toList());

// 傳統(tǒng)寫法
List<Integer> filteredNumbers = new ArrayList<>();
for (Integer n : numbers) {
    if (n < 10) {
        filteredNumbers.add(n);
    }
}

7. 在集合中進行映射

// 使用Lambda表達式將字符串轉(zhuǎn)換為它們的長度
List<String> words = Arrays.asList("apple", "banana", "orange");
List<Integer> wordLengths = words.stream()
                                 .map(s -> s.length())
                                 .collect(Collectors.toList());

// 傳統(tǒng)寫法
List<Integer> wordLengths = new ArrayList<>();
for (String s : words) {
    wordLengths.add(s.length());
}

8.對集合中的元素進行排序

// 使用Lambda表達式將集合中的元素按字母順序排序
List<String> words = Arrays.asList("apple", "banana", "orange");
Collections.sort(words, (s1, s2) -> s1.compareTo(s2));

// 傳統(tǒng)寫法
List<String> words = Arrays.asList("apple", "banana", "orange");
Collections.sort(words, new Comparator<String>() {
    public int compare(String s1, String s2) {
        return s1.compareTo(s2);
    }
});

9.執(zhí)行多個操作

// 使用Lambda表達式執(zhí)行多個操作
List<String> words = Arrays.asList("apple", "banana", "orange");
words.stream()
     .filter(s -> s.startsWith("a"))
     .map(s -> s.toUpperCase())
     .forEach(System.out::println);

// 傳統(tǒng)寫法
List<String> words = Arrays.asList("apple", "banana", "orange");
for (String s : words) {
    if (s.startsWith("a")) {
        System.out.println(s.toUpperCase());
    }
}

10.對整數(shù)數(shù)組進行排序

//傳統(tǒng)寫法:

int[] arr = {3, 1, 4, 1, 5, 9, 2, 6, 5};
Arrays.sort(arr, new Comparator<Integer>() {
    public int compare(Integer a, Integer b) {
        return a - b;
    }
});
//Lambda寫法:

int[] arr = {3, 1, 4, 1, 5, 9, 2, 6, 5};
Arrays.sort(arr, (a, b) -> a - b);

說明:這個示例展示了如何使用Lambda表達式對一個整數(shù)數(shù)組進行排序。在傳統(tǒng)寫法中,我們需要定義一個實現(xiàn)Comparator接口的類,并在排序時將其傳遞給Arrays.sort()方法。而在Lambda寫法中,我們只需要編寫一行簡單的代碼即可完成相同的操作。

11使用Stream API過濾集合元素


//傳統(tǒng)寫法:

List<String> list = Arrays.asList("apple", "banana", "cherry", "date");
List<String> filteredList = new ArrayList<>();
for (String s : list) {
    if (s.startsWith("a")) {
        filteredList.add(s);
    }
}
//Lambda寫法:

List<String> list = Arrays.asList("apple", "banana", "cherry", "date");
List<String> filteredList = list.stream()
    .filter(s -> s.startsWith("a"))
    .collect(Collectors.toList());

說明:這個示例展示了如何使用Lambda表達式和Stream API對一個字符串列表進行過濾。在傳統(tǒng)寫法中,我們需要手動遍歷整個集合并篩選出符合條件的元素,而在Lambda寫法中,我們可以使用stream()方法將集合轉(zhuǎn)換為流,并使用filter()方法對流進行過濾操作。

12. 使用Lambda表達式作為方法參數(shù)

//傳統(tǒng)寫法:

public static void operate(int a, int b, Operation operation) {
    System.out.println(operation.operate(a, b));
}

interface Operation {
    int operate(int a, int b);
}

operate(2, 3, new Operation() {
    public int operate(int a, int b) {
        return a + b;
    }
});
//Lambda寫法:

public static void operate(int a, int b, IntBinaryOperator operator) {
    System.out.println(operator.applyAsInt(a, b));
}

operate(2, 3, (a, b) -> a + b);

說明:這個示例展示了如何使用Lambda表達式作為方法參數(shù)。在傳統(tǒng)寫法中,我們需要定義一個實現(xiàn)某個接口的類,并在調(diào)用方法時將其傳遞給方法。而在Lambda寫法中,我們可以直接在調(diào)用方法時編寫Lambda表達式作為參數(shù),從而省略了額外的類定義。

13.使用Lambda表達式作為變量

//傳統(tǒng)寫法:

public static void printMessage(String message) {
    System.out.println(message);
}

printMessage("Hello, world!");
//Lambda寫法:

Consumer<String> printer = (message) -> System.out.println(message);
printer.accept("Hello, world!");

說明:這個示例展示了如何使用Lambda表達式定義一個函數(shù)式接口的實現(xiàn),并將其作為變量使用。在傳統(tǒng)寫法中,我們需要定義一個方法并在調(diào)用時傳遞參數(shù)。而在Lambda寫法中,我們可以先定義一個函數(shù)式接口,然后使用Lambda表達式創(chuàng)建其實現(xiàn),并將其賦值給一個變量。

4.Lambda表達式優(yōu)缺點

Lambda表達式具有以下優(yōu)點

簡潔:使用Lambda表達式可以少寫很多樣板代碼。
靈活:Lambda表達式可以在運行時定義,在需要時才創(chuàng)建。
易讀:Lambda表達式的語法簡單明了,易于理解。

Lambda表達式也具有以下缺點:

可讀性:過度使用Lambda表達式可能會降低代碼的可讀性。
性能:Lambda表達式的性能可能比普通方法略差。但在大部分場景下,這個差距是微不足道的。文章來源地址http://www.zghlxwxcb.cn/news/detail-418628.html

到了這里,關(guān)于Lambda表達式:簡介、語法和用法的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 20230901工作心得:IDEA列操作&lambda表達式加強版用法

    20230901工作心得:IDEA列操作&lambda表達式加強版用法

    今天是中小學(xué)開學(xué)時間,亦是9月的開始,繼續(xù)努力。 今日收獲較大的有四個地方,先說這四點。 使用場景:需要批量將Excel表格里的數(shù)據(jù)插入到數(shù)據(jù)庫中,此時需要寫大量的insert SQL語句。 比如像這樣的,密碼麻麻的,可能要插入幾百條數(shù)據(jù)。 一條一條寫,要寫到天荒地老

    2024年02月10日
    瀏覽(22)
  • 【javaSE】 Lambda表達式與Lambda表達式的使用

    【javaSE】 Lambda表達式與Lambda表達式的使用

    Lambda表達式是Java SE 8中一個重要的新特性。lambda表達式允許你通過表達式來代替功能接口。 lambda表達式就和方法一樣,它提供了一個正常的參數(shù)列表和一個使用這些參數(shù)的主體(body,可以是一個表達式或一個代碼塊)。 Lambda 表達式(Lambda expression) ,基于數(shù)學(xué)中的λ演算得名,也

    2024年02月08日
    瀏覽(27)
  • 進階JAVA篇- Lambda 表達式與 Lambda 表達式的省略規(guī)則

    進階JAVA篇- Lambda 表達式與 Lambda 表達式的省略規(guī)則

    目錄 ? ? ? ? 1.0 什么是 Lambda 表達式? ? ? ? ? 1.1 既然跟匿名內(nèi)部類相關(guān),先來回顧匿名內(nèi)部類。 ? ? ? ? ?1.2 Lambda 表達式與匿名內(nèi)部類之間的關(guān)系。 ? ? ? ? 1.3 函數(shù)式接口 ? ? ? ? 1.4 在具體代碼中來操作一下 ? ? ? ? 2.0?Lambda 表達式省略規(guī)則 ??????? ?Lambda 表達

    2024年02月08日
    瀏覽(29)
  • 探索Python中的函數(shù)式編程:Lambda表達式與函數(shù)式工具【第135篇—Lambda表達式】

    探索Python中的函數(shù)式編程:Lambda表達式與函數(shù)式工具【第135篇—Lambda表達式】

    前些天發(fā)現(xiàn)了一個巨牛的人工智能學(xué)習(xí)網(wǎng)站,通俗易懂,風(fēng)趣幽默,忍不住分享一下給大家。【點擊進入巨牛的人工智能學(xué)習(xí)網(wǎng)站】。 在Python編程世界中,函數(shù)式編程逐漸成為了一種流行的范式,特別是在處理數(shù)據(jù)和編寫簡潔、高效代碼時。函數(shù)式編程的核心思想是將計算視

    2024年04月08日
    瀏覽(33)
  • .NET寫一個自己的Lambda表達式與表達式樹

    .NET寫一個自己的Lambda表達式與表達式樹

    LambdaExpression繼承Expression Expression 又繼承LambdaExpressio 所以,LambdaExpression與 Expression 的區(qū)別在于:泛型類以靜態(tài)類型的方法標識了它是什么種類的表達式,也就是說,他確定了返回類型和參數(shù)。所以顯然,TDelegate必須是一個委托類型。 注意 :并非所有的Lambda表達式都能轉(zhuǎn)換成

    2024年02月13日
    瀏覽(23)
  • 【JAVA】包裝類、正則表達式、Arrays類、Lambda表達式

    包裝類是8種基本數(shù)據(jù)類型對應(yīng)的引用類型 作用:后期的集合和泛型不支持基本類型,只能使用包裝類 基本數(shù)據(jù)類型和其對應(yīng)的引用數(shù)據(jù)類型的變量可以互相賦值 基本數(shù)據(jù)類型 引用數(shù)據(jù)類型 byte Byte short Short int Integer long Long char Character float Float double Double boolean Boolean 包裝類

    2024年02月13日
    瀏覽(36)
  • 23.Lambda表達式

    23.Lambda表達式

    Lambda 表達式(lambda expression)是一個匿名函數(shù),Lambda表達式基于數(shù)學(xué)中的λ演算得名,直接對應(yīng)于其中的lambda抽象(lambda abstraction),是一個匿名函數(shù),即沒有函數(shù)名的函數(shù)。Lambda表達式可以表示閉包(注意和數(shù)學(xué)傳統(tǒng)意義上的不同)。Lambda表達式是Java SE 8中一個重要的新特性。

    2024年02月03日
    瀏覽(30)
  • Java- Lambda表達式

    目錄 一、Lambda簡介 二、Lambda使用前提 三、Lambda語法 1.操作符 a.\\\"-\\\" ?b.\\\"::\\\" 2.格式? a.無參數(shù) b.有參數(shù) 四、Lambda演化過程 五、Lambda實現(xiàn)排序 Lambda 表達式,也可稱為閉包,它是推動 Java 8 發(fā)布的最重要新特性。Lambda 允許把函數(shù)作為一個方法的參數(shù)(函數(shù)作為參數(shù)傳遞進方法中)

    2024年02月03日
    瀏覽(28)
  • Java Lambda表達式

    1.1 函數(shù)式編程思想概括 在數(shù)學(xué)中,函數(shù)就是有輸入量、輸出量的一套計算方案,也就是“拿數(shù)據(jù)做操作” 面向?qū)ο笏枷霃娬{(diào)“必須通過對象的形式來做事情” 函數(shù)式思想則盡量忽略面

    2024年02月07日
    瀏覽(42)
  • 深入理解lambda表達式

    深入理解lambda表達式

    var builder = WebApplication.CreateBuilder(args); var app = builder.Build(); app.Use(async (context, next) = { // Add code before request. }); 這段C#代碼是用于設(shè)置ASP.NET Core應(yīng)用中的中間件。下面是詳細解釋: app.Use : 這個方法是用來向應(yīng)用的請求處理管道中添加一個中間件的。在ASP.NET Core中,中間件用于處

    2024年02月20日
    瀏覽(30)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包