日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

使用NetBeans Lambda支持在Java 8中使用Lambda表达式对列表进行排序

發布時間:2023/12/3 java 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用NetBeans Lambda支持在Java 8中使用Lambda表达式对列表进行排序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

作為JSR 335的一部分, Lambda表達式已從Java 8開始引入Java語言,這是Java語言的一個重大變化。 如果您想了解更多關于Lambda表達式以及JSR 335的信息,可以訪問以下資源:

  • 在OpenJDK上的Lambda項目 。
  • Lambda常見問題解答 。
  • 另一篇詳細討論lambda表達式支持的博客文章
  • JSR 335的規范草案 。



如果我研究作為JSR 335一部分進行的每項功能/更改,那么這對我以及您都會感到困惑。 因此,為了使更改更容易理解,我將選擇一些用例,并嘗試應用作為JSR一部分添加的功能。 在開始之前,您必須下載支持lambda表達式語法的Netbeans版本以及具有JSR 335更改的JDK構建。

  • 可以從此處下載具有JSR 335更改的JDK構建,即對lambda表達式的支持以及對collections API的增強。
  • Netbeans具有對Lambda表達式的實驗支持。

一旦下載了Netbeans每晚構建zip,您將必須解壓縮內容,然后導航到bin目錄以啟動Netbeans。 并且,一旦下載并提取了具有JSR335支持的JDK的內容,就必須在Netbeans中的“工具”->“ Java平臺”菜單中創建一個新平臺,以便在JSR335更改后使用JDK。 添加Java平臺彈出窗口類似于:

現在讓我們考慮一個包含以下內容的列表作為示例:

List<Person> personList = new ArrayList<>(); personList.add(new Person('Virat', 'Kohli')); personList.add(new Person('Arun', 'Kumar')); personList.add(new Person('Rajesh', 'Mohan')); personList.add(new Person('Rahul', 'Dravid'));

并允許使用Java 8之前的版本或當前的方法根據firstName對列表進行排序:

//Sorting using Anonymous Inner class. Collections.sort(personList, new Comparator<Person>(){public int compare(Person p1, Person p2){return p1.firstName.compareTo(p2.firstName);} });

如果您正在使用支持Lambda表達式的Netbeans夜間構建 ,則IDE將提供提示,內容為:

然后使用Netbeans支持將上面的代碼替換為Lambda表達式,我們得到:

//Anonymous Inner class replaced with Lambda expression. Collections.sort(personList, (Person p1, Person p2) -> p1.firstName.compareTo(p2.firstName));

人們可以看到使用Lambda表達式所減少的冗長程度。 而且現在的代碼比使用Anonymous內部類時更清晰。 通過從參數中刪除類型信息,可以使它更加簡潔,因為從使用lambda表達式的上下文中可以推斷出類型信息。

//Lambda expression with type information removed. Collections.sort(personList, (p1, p2) -> p1.firstName.compareTo(p2.firstName));

讓我們剖析上述lambda表達式以了解其組成部分。 Lambda表達式的一般語法為:()-> {} OR()->單個語句/表達式。 當lambda表達式的主體必須是一個塊時,將使用()-> {}版本,而當lambda表達式具有單個語句/表達式時,將使用另一個版本。 在上述情況下,只有一個表達式,因此此處不使用塊。 ()用于聲明lambda表達式的參數。 參數可以具有類型信息,或者如果可以從上下文中推斷出類型,則可以跳過這些參數。 在我們的例子中,類型信息是從上下文中推斷出來的。 另一個觀察結果是,lambda表達式等效于覆蓋Comparator類中存在的compare方法。 并且它還替換了創建Anonymous Inner類的代碼,以擴展Comparator類。

可以對上述代碼進行的另一項更改是,“排序”方法已作為JSR 335更改的一部分添加到List類中,我們可以使用該方法對列表進行排序:

//Using sort method in List. personList.sort((p1, p2) -> p1.firstName.compareTo(p2.firstName));

請注意,排序類存在于List類中,該類是支持JSR 335的JDK的一部分。 這只是在現有代碼中使用Lambda表達式的示例示例。 有關更多詳細信息,請訪問我在帖子開頭分享的鏈接。

參考: 在我們的JCG合作伙伴 Mohamed Sanaulla的“ 經驗無限”博客中, 使用NetBeans Lambda支持使用Lambda表達式對Java 8中的列表進行排序 。

翻譯自: https://www.javacodegeeks.com/2013/03/using-lambda-expression-to-sort-a-list-in-java-8-using-netbeans-lambda-support.html

總結

以上是生活随笔為你收集整理的使用NetBeans Lambda支持在Java 8中使用Lambda表达式对列表进行排序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。