Java 8 Lambda : Comparator 例子__Java

來源:互聯網
上載者:User

在下面例子中,我們將展示怎麼用Java 8 Lambda 運算式去寫一個對List集合排序的Comparator 。

1. Classic Comparator example.

Comparator<Developer> byName = new Comparator<Developer>() {@Overridepublic int compare(Developer o1, Developer o2) {return o1.getName().compareTo(o2.getName());}};

2. Lambda expression equivalent.

Comparator<Developer> byName =(Developer o1, Developer o2)->o1.getName().compareTo(o2.getName());
1. 不用 Lambda 實現排序   樣本示範用一個 Developer  對象實現對其age屬性的排序功能。正常的,你會用Collections.sort,通過匿名Comparator 比較子實現,如下所示: TestSorting.java
package com.mkyong.java8;import java.math.BigDecimal;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.List;public class TestSorting {public static void main(String[] args) {List<Developer> listDevs = getDevelopers();System.out.println("Before Sort");for (Developer developer : listDevs) {System.out.println(developer);}//sort by ageCollections.sort(listDevs, new Comparator<Developer>() {@Overridepublic int compare(Developer o1, Developer o2) {return o1.getAge() - o2.getAge();}});System.out.println("After Sort");for (Developer developer : listDevs) {System.out.println(developer);}}private static List<Developer> getDevelopers() {List<Developer> result = new ArrayList<Developer>();result.add(new Developer("mkyong", new BigDecimal("70000"), 33));result.add(new Developer("alvin", new BigDecimal("80000"), 20));result.add(new Developer("jason", new BigDecimal("100000"), 10));result.add(new Developer("iris", new BigDecimal("170000"), 55));return result;}}

Output

Before SortDeveloper [name=mkyong, salary=70000, age=33]Developer [name=alvin, salary=80000, age=20]Developer [name=jason, salary=100000, age=10]Developer [name=iris, salary=170000, age=55]After SortDeveloper [name=jason, salary=100000, age=10]Developer [name=alvin, salary=80000, age=20]Developer [name=mkyong, salary=70000, age=33]Developer [name=iris, salary=170000, age=55]

當排序需求改變時,你只能通過一個新的匿名類實現,如下所示:

//sort by ageCollections.sort(listDevs, new Comparator<Developer>() {@Overridepublic int compare(Developer o1, Developer o2) {return o1.getAge() - o2.getAge();}});//sort by nameCollections.sort(listDevs, new Comparator<Developer>() {@Overridepublic int compare(Developer o1, Developer o2) {return o1.getName(

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.