首页 > 其他 > 详细

Lambda表达式之Comparator

时间:2021-04-03 09:41:57      阅读:33      评论:0      收藏:0      [点我收藏+]
public class ComparatorTest {
    public static void main(String[] args) {
        Apple a1 = new Apple("red",120.33);
        Apple a2 = new Apple("red",129.33);
        Apple a3 = new Apple("red",119.33);
        List<Apple> appleList = Arrays.asList(a1,a2,a3);
        test1(appleList);
    }

    /**
     * 方式1 创建类并实现Comparator
     * @param appleList
     */
    public static void test1(List<Apple> appleList){
        appleList.sort(new AppleComparator());
        System.out.println(JSON.toJSONString(appleList));
    }

    /**
     * 方式2 匿名内部类
     * @param appleList
     */
    public static void test2(List<Apple> appleList){
        appleList.sort(new Comparator<Apple>() {
            @Override
            public int compare(Apple o1, Apple o2) {
                return o1.getWeight().compareTo(o2.getWeight());
            }
        });
    }

    /**
     * 方式3 使用Lambda表达式
     * @param appleList
     */
    public static void test3(List<Apple> appleList){
        appleList.sort(((o1, o2) -> o1.getWeight().compareTo(o2.getWeight())));
        System.out.println(JSON.toJSONString(appleList));
    }

    /**
     * 方式4 方法3改进
     */
    public static void test4(List<Apple> appleList){
        //comparing中的参数是Function的实现
        appleList.sort(Comparator.comparing((a -> a.getWeight())));
        System.out.println(JSON.toJSONString(appleList));
    }

    /**
     * 方式5 使用方法引用
     */
    public static void test5(List<Apple> appleList){
        appleList.sort(Comparator.comparing((Apple::getWeight)));
        System.out.println(JSON.toJSONString(appleList));
    }

}
public class AppleComparator implements Comparator<Apple> {

    @Override
    public int compare(Apple o1, Apple o2) {
        return o1.getWeight().compareTo(o2.getWeight());
    }
}
public class Apple {
    private String color;
    private Double weight;

    public Apple() {
    }

    public Apple(String color, Double weight) {
        this.color = color;
        this.weight = weight;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    public Double getWeight() {
        return weight;
    }

    public void setWeight(Double weight) {
        this.weight = weight;
    }
}

 

Lambda表达式之Comparator

原文:https://www.cnblogs.com/vijayxu/p/14612972.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!