<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # Java Lambda 表達式教程 > 原文: [https://javatutorial.net/java-lambda-expressions-tutorial](https://javatutorial.net/java-lambda-expressions-tutorial) Java 8 引入了 Lambda 表達式,它是引入的最大(甚至不是最大)功能之一,因為 Lambda 表達式使功能編程成為可能,并且使您的代碼更整潔,并從整體上極大地簡化了整個代碼的實現。 例如,當您必須使用匿名類并且該類非常簡單(例如僅包含幾個(或更少)方法)時,您會遇到非常不清楚且難以閱讀/維護的語法。 這是 Lambda 表達式發揮作用的時候。 ![java-featured-image](https://img.kancloud.cn/05/3e/053ee0bb59842d92359246c98f815e0c_780x330.jpg) ### 讓我們比較一下使用 Lambda 表達式和不使用 Lambda 表達式 假設有一個類,該類具有默認情況下按升序對元素進行排序的方法(例如`Comparator`)。 此類使用`compare`來對元素進行排序。 讓我們覆蓋它。 ## 不使用 Lambda 表達式 ```java Comparator<Double> sorter = new Comparator<Double>() { @Override public int compare(Double x, Double y) { return y.compareTo(x); } }; ``` ## 使用 Lambda 表達式 ```java Comparator<Double> lambdaComparator = (x, y) -> y.compareTo(x); ``` 我相信您會注意到兩種方法之間的區別。 兩者都導致同一件事,這顛倒了該方法對元素進行排序的順序(從升序到降序,對您的比較器開玩笑!)。 因此,僅通過查看此示例,使用 lambda 表達式的一個關鍵優勢就是可以減少鍵入的代碼。 對于我們懶惰的程序員來說,這是一個很好的例子。 但是,人們可能會爭辯說,由于這種簡單性,實際上使記住語法變得更加困難。 沒錯,這將是一個缺點。 最初,語法可能有點難以記住,但是一旦您記住它,就可以編寫簡潔的代碼,該代碼也允許您實現`Functional`接口。 讓我們看看 Lambda 表達式的更多示例。 首先,如我之前所說,語法起初有點令人生畏。 如果您要“覆蓋”的函數沒有任何參數,則只需鍵入`() -> {body}`。 另一方面,如果只有一個參數,則鍵入`x -> {body}`。 對于兩個或更多參數,您將具有`(x, y, z -> {body}`。 ## 循環播放 ```java import java.util.*; public class LambdaExpressionDemo { public static void main(String[] args) { List<int> listOfNumbers = new ArrayList<int>(); listOfNumbers.add(1); listOfNumbers.add(2); listOfNumbers.add(3); listOfNumbers.add(4); listOfNumbers.add(5); listOfNumbers.add(6); listOfNumbers.add(7); listOfNumbers.add(8); listOfNumbers.forEach( (num) -> System.out.println(num) ); } } ``` 注意,在`forEach`循環的主體中,我省略了`{}`花括號。 這是因為主體僅包含一行。 如果我有兩行或更多行,假設另一個打印語句,那么我將擁有大括號,如下所示: ```java import java.util.*; public class LambdaExpressionDemo { public static void main(String[] args) { List<int> listOfNumbers = new ArrayList<int>(); listOfNumbers.add(1); listOfNumbers.add(2); listOfNumbers.add(3); listOfNumbers.add(4); listOfNumbers.add(5); listOfNumbers.add(6); listOfNumbers.add(7); listOfNumbers.add(8); listOfNumbers.forEach( (num) -> { System.out.println(num); System.out.println(num); ); } } ``` ## 從 Lambda 表達式返回值 您也可以像使用方法一樣使用 lambda 表達式返回值。 這里要注意的一個關鍵是`return`關鍵字是可選的。 您可以忽略它,編譯器知道它的工作。 語法類似于我們之前使用的語法。 ```java (x, y) -> { return x > y; } ``` 因此,如果我們再次查看 Lambda 表達式提供的內容,我們可以得出結論,它為我們提供了可選的類型聲明(無需聲明參數的類型),可選的花括號,可選的`return`關鍵字(因為編譯器自動返回值) (如果主體具有返回值的符號表達式)和參數周圍的可選括號。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看