找到 4330 篇文章 關於 Java 8

如何在 Java 中將 Callable 寫成 Lambda 表示式?

raja
更新於 2020-07-13 05:32:03

6K+ 瀏覽量

Callable 介面定義在 java.util.concurrent 包中。Callable 的物件返回由執行緒完成的計算結果,這與 Runnable 介面形成對比,Runnable 介面只能執行執行緒。Callable 物件返回 Future 物件,該物件提供方法來監控由執行緒執行的任務的進度。Future 物件用於檢查 Callable 介面的狀態,並在執行緒完成時從 Callable 中檢索結果。在下面的示例中,我們可以將 Callable 介面寫成 Lambda 表示式。示例import java.util.concurrent.*; public class LambdaCallableTest {    public static void main(String args[]) throws InterruptedException {       ExecutorService executor = Executors.newSingleThreadExecutor();   ... 閱讀更多

什麼是 Java 中的 SAM 介面?

raja
更新於 2020-07-13 05:26:06

5K+ 瀏覽量

只有一個抽象方法的介面稱為函式式介面,也稱為單抽象方法介面 (SAM 介面)。一個抽象方法意味著允許預設方法或抽象方法,其實現預設可用。SAM 介面的例項有 java.lang.Runnable、java.awt.event.ActionListener、java.util.Comparator 和 java.util.concurrent.Callable。SAM 介面可以使用 lambda 表示式或方法引用來實現。語法@FunctionalInterface public interface Changeable {  public void change(T o); }示例@FunctionalInterface interface MyInterface {    String reverse(String n); } public class LambdaReverseTest {    public static void main( String[] args ) {       MyInterface myInterface = (str) -> { // ... 閱讀更多

如何在 Java 中實現對特定物件的例項方法的引用?

raja
更新於 2020-07-11 12:53:39

550 瀏覽量

方法引用是 lambda 表示式的簡化形式,可以執行一個方法。它可以使用 "::" 符號來描述。對特定物件的例項方法的引用是指繫結到接收者的非靜態方法。語法物件引用::例項方法名示例 - 1import java.util.*; public class InstanceMethodReferenceTest1 {    public static void main(String[] args) {       String[] stringArray = { "India", "Australia", "England", "Newzealand", "SouthAfrica", "Bangladesh", "WestIndies", "Zimbabwe" };       Arrays.sort(stringArray, String::compareToIgnoreCase);       System.out.println(Arrays.toString(stringArray));    } }輸出[Australia, Bangladesh, England, India, Newzealand, SouthAfrica, WestIndies, Zimbabwe]示例 - 2@FunctionalInterface interface Operation {    public int average(int ... 閱讀更多

Java 中方法引用和建構函式引用之間的區別?

raja
更新於 2020-07-11 12:54:44

2K+ 瀏覽量

方法引用類似於 lambda 表示式,用於引用方法而不呼叫它,而建構函式引用用於引用建構函式而不例項化命名類。方法引用需要與 lambda 表示式類似的目標型別。但它們不是提供方法的實現,而是引用現有類或物件的方法,而建構函式引用為類中的不同建構函式提供不同的名稱。語法 - 方法引用::示例import java.util.*; public class MethodReferenceTest {    public static void main(String[] args) {       List names = new ArrayList();       List selectedNames = new ArrayList();     ... 閱讀更多

Java 中 lambda 表示式中形式引數的規則是什麼?

raja
更新於 2020-07-11 12:50:17

300 瀏覽量

lambda 表示式類似於具有引數、主體和返回型別的方法。它也可以稱為匿名函式(沒有名稱的方法)。在 lambda 表示式中使用形式引數時,我們需要遵循一些規則。如果函式式介面的抽象方法是零引數方法,則箭頭 (->) 的左側必須使用空括號。如果函式式介面的抽象方法是一個引數方法,則括號不是必需的。如果函式式介面的抽象方法是多個引數方法,則括號是必需的。形式引數用逗號分隔,並且可以與... 閱讀更多

Java 中 lambda 表示式主體的規則是什麼?

raja
更新於 2020-07-11 12:48:49

1K+ 瀏覽量

lambda 表示式是作為引數傳遞給另一個函式的匿名函式(無名函式)。在使用 lambda 表示式的正文時,我們需要遵循一些規則。lambda 表示式正文的規則lambda 表示式的正文可以是單個表示式或多個語句。如果我們使用單個表示式作為 lambda 表示式的正文,則無需用花括號 ({}) 將正文括起來。如果我們使用一個或多個語句作為 lambda 表示式的正文,則必須將它們括在花括號 ({}) 中。語法(引數) 或 () -> {用分號分隔的語句體} 或單個語句示例介面 Message {   ... 閱讀更多

如何在 Java 中使用 Stream API 和 lambda 對集合進行排序?

raja
更新於 2020-07-11 12:43:12

435 瀏覽量

Stream API 是在 Java 中實現函數語言程式設計的強大方法。它通常與 lambda 表示式結合使用,並提供了一種有效的方式來執行資料操作操作,如排序、過濾、對映、歸約等。在下面的示例中,我們可以使用 Stream API 對集合進行排序。它透過使用 Comparator 介面的 sorted() 方法提供排序邏輯。如果我們有兩個 Comparator 介面例項,並且需要根據複合條件(根據第一個比較器,然後根據第二個比較器)進行排序,我們可以透過在第一個例項上呼叫 thenComparing() 方法並將第二個例項傳遞進來,來使用這兩個比較器。示例import java.util.*; import java.util.stream.*; ... 閱讀更多

為什麼我們在 Java 中使用 lambda 表示式?

raja
更新於 2020-07-11 12:43:42

3K+ 瀏覽量

lambda 表示式可以透過定義可以作為引數傳遞給某些方法的匿名函式來實現函式式介面。啟用函數語言程式設計:所有新的基於 JVM 的語言都利用其應用程式中的函式式正規化,但程式設計師被迫使用面向物件程式設計 (OOPS),直到 lambda 表示式出現。因此,lambda 表示式使我們能夠編寫函式式程式碼。可讀且簡潔的程式碼:人們已經開始使用 lambda 表示式,並報告說它可以幫助從他們的程式碼中刪除大量行。易於使用的 API 和庫:使用 lambda 表示式設計的 API 更易於使用並支援其他 API。啟用支援... 閱讀更多

Predicate 介面在 Java 中 lambda 表示式中的重要性?

raja
更新於 2020-07-11 12:38:14

2K+ 瀏覽量

謂詞(Predicate)是一個通用的函式式介面,表示一個接受單個引數並返回布林值(true 或 false)的函式。此介面位於 java.util.function 包中,幷包含一個 test(T t) 方法,用於評估給定引數的謂詞。語法public interface Predicate {  boolean test(T t); }示例import java.util.*; import java.util.function.Predicate; public class LambdaPredicateTest {    public static void main(String args[]) {       Employee emp1 = new Employee("Raja", 26);       Employee emp2 = new Employee("Jaidev", 24);       Employee emp3 = new Employee("Adithya", 30);       List empList = new ArrayList();       empList.add(emp1);       empList.add(emp2); ... 閱讀更多

如何在 Java 中使用方法引用查詢集合中的最大值?

raja
更新於 2020-07-11 12:29:58

177 次瀏覽

方法引用在 Lambda 表示式中提供了一種無需執行即可引用方法的方式。它需要一個目標型別上下文,該上下文包含一個相容的函式式介面。語法 :: 在下面的示例中,我們可以使用方法引用找出 ArrayList 的最大值。示例import java.util.*; class MyClass {    private int val;    MyClass(int v) {       val = v;    }    int getVal() {       return val;    } } public class MethodReferenceMaxValueTest {    static int compareMaxValue(MyClass a, MyClass b) {       return a.getVal() - b.getVal();    }    public ... 閱讀更多

廣告
© . All rights reserved.