Java8:Lambda-Comparator

来源:互联网 发布:java工程师工作累不累 编辑:程序博客网 时间:2024/06/07 15:12

原文链接

经典的比较方法:

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

对应使用Lambda表达式实现该方法:

Comparator<Developer> byName =  (Developer o1, Developer o2)->o1.getName().compareTo(o2.getName());

例子:
1. 不使用Lambda表达式:

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 age        Collections.sort(listDevs, new Comparator<Developer>() {            @Override            public 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;    }}
  1. 使用Lambda表达式:
package com.mkyong.java8;import java.math.BigDecimal;import java.util.ArrayList;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);        }        System.out.println("After Sort");        //lambda        //listDevs.sort((o1, o2)->o1.getName().compareTo(o2.getName()));        //lambda        listDevs.sort((Developer o1, Developer o2)->o1.getAge()-o2.getAge());        //java 8 only, lambda also, to print the List        listDevs.forEach((developer)->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;    }}
原创粉丝点击